http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html
2.9.1线程安全
本卷POSIX.1-2008定义的所有函数都应是线程安全的,但以下函数1不必是线程安全的.
...
regexec
并且regcomp
不在该列表中,因此它们必须是线程安全的.
另见:http://www.opengroup.org/onlinepubs/9699919799/functions/regcomp.html
部分理由案文如下:
定义接口,使匹配的子串rm_sp和rm_ep位于单独的regmatch_t结构中,而不是在regex_t中.这允许在几个上下文中同时使用单个编译的RE; 在main()和信号处理程序中,或者在轻量级进程的多个线程中.
use*_*515 -1
我可以在多线程程序中使用正则表达式而不加锁吗
不同的,是的。
我可以在多个线程中同时使用相同的 regex_t 吗?
一般来说:如果您打算这样做,则必须对函数进行锁定,因为很少有数据结构会为您执行锁定。
regexec:然而,由于 regexec 采用const
regex_t,因此执行 regexec对于并发执行来说似乎是安全的,无需锁定。(毕竟,这是 POSIX.1-2001,早期 BSD API 中使用的静态缓冲区等愚蠢的东西通常不会再出现。)
归档时间: |
|
查看次数: |
2054 次 |
最近记录: |