是一个静态的boost :: wregex实例是线程安全的?(Is a static boost::

2019-09-22 02:58发布

它是安全的声明静态/全局变量具有固定的boost :: wregex,然后用它从多个线程,而不用担心正则表达式的内部状态(如果加速已编译BOOST_HAS_THREADS)?

boost::wregex g_regex( L"common|test" );

随后有多个线程调用:

if ( boost::regex_search( test_str, g_regex ) )
...

Answer 1:

http://www.boost.org/doc/libs/1_51_0/libs/regex/doc/html/boost_regex/background_information/thread_safety.html

类basic_regex和其typedef的正则表达式和wregex是线程安全的,在编译的正则表达式可以安全地在线程之间共享。 匹配算法regex_match,regex_search和regex_replace都是可重入和线程安全的。 类的match_results现在线程安全的,在该匹配的结果可以从一个线程被安全地拷贝到另一个(例如,一个线程可能发现匹配和推的match_results实例到一个队列,而另一个线程弹出它们关闭的另一端),否则使用每个线程的match_results的一个单独的实例。



文章来源: Is a static boost::wregex instance thread-safe?
标签: c++ boost