当前位置: 首页 > 面试题库 >

strtok函数线程安全

黎同
2023-03-14
问题内容

我一直在花一些时间调试一个导致分段错误的程序。该错误是不确定性和断断续续的,这很烦人。我把范围缩小到了strtok()。我怀疑是strtok()在两个不同的线程中拆分字符串的调用导致了分段错误。我可以strtok()在两个不同的线程中调用吗?

谢谢。


问题答案:

strtok()不是可重入的,因此不应在线程化应用程序中使用它,而应使用strtok_r()



 类似资料:
  • 问题内容: 为了使gettimeofday能够正常工作,当前时间必须全局存储,但是我不确定该函数是否修改了任何全局状态,从而并发执行未定义。 问题答案: gettimeofday是线程安全的。 这里列出的(posix)函数可能不是,gettimeofday不是其中之一。

  • strtok(分割字符串) 相关函数 index,memchr,rindex,strpbrk,strsep,strspn,strstr 表头文件 #include<string.h> 定义函数 char * strtok(char *s,const char *delim); 函数说明 strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strt

  • strtok 分割字符串 相关函数 index,memchr,rindex,strpbrk,strsep,strspn,strstr 表头文件 #include<string.h> 定义函数 char *strtok(char *s, const char *delim); 函数说明 strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当str

  • 问题内容: 如果我使用fopen()调用来在多线程中打开同一文件,然后将数据写入该文件。我是否应该使用互斥锁来确保数据不会混乱? 问题答案: 如果两个线程都使用来打开同一文件,则它们各自将具有独立的文件流(),并由引用同一文件的独立文件描述符支持。您可以独立地写入两个文件流,但是文件的最终结果将取决于线程在何处写入以及何时刷新文件流。除非您控制每个线程的写入位置,否则结果是不可预测的。最简单的事情

  • 条款16: 让const成员函数线程安全 如果我们在数学领域中工作,我们就会发现用一个类表示多项式是很方便的。在这个类中,使用一个函数来计算多项式的根是很有用的。也就是多项式的值为零的时候。这样的一个函数它不会更改多项式。所以,它自然被声明为const函数。 class Polynomial { public: using RootsType = // 数据结构保存

  • 虽然我的C程序显然不是线程安全的,但我需要从Java的多线程并行调用它。由于性能问题,我无法重写C代码,需要执行通过并行编译C程序创建的DLL。 如何从Java的多线程调用非线程安全的C函数? 我尝试的是使用JNA并在每次线程调用DLL函数时调用。但是,它并没有解决这个问题,并且出现了分割错误。 我认为DLL的新内存空间是通过调用分配的,应该避免重入问题。但是,我的想法可能是错误的。 我搜索了从J