多线程和strtok

and*_*and 8 c string multithreading

我将继续在多线程应用程序中拆分字符串,我读过这strtok不适合这个,但为什么呢?

我应该考虑在我调用的代码部分周围使用信号量strtok吗?

R..*_*R.. 11

你应该考虑不使用strtok或根本不使用strtok_r.编写类似于这些的自己的函数但更好地根据您想要使用它们的方式进行定制是微不足道的,当然让调用者存储所有状态并传递指向线程安全/重入的状态的指针.

至于你提到使用信号量(或其他锁定原语)的问题四处调用strtok,这不会帮助,如果你只是把它周围的实际调用.你必须解析保护的内部状态的字符串的整个过程中持有的锁strtok.我相信这是很多人称之为替代数据的锁码,它通常被认为是一件坏事.


fas*_*ava 9

使用strtok_r()来保证线程安全.