loading...

POSIX线程不安全函数

作者:kimi 发布时间:April 10, 2012 分类:Linux

这几天调bug,该bug的特点是随机出现,而且不可重现!找了一天之后,终于发现,是因为在多线程函数中用了线程不安全的strtok函数导致的。

char *strtok(char *s, const char *delim);

  • 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
  • 说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。
  • 返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

多线程不安全函数分类

  • 不保护共享产量的函数。
  • 保持跨越多个调用状态的函数。
  • 返回指向静态变量的指针的函数。
  • 调用上面3类函数的函数,即调用线程不安全函数的函数。

阅读剩余部分...