Безопасно ли объявлять статическую / глобальную переменную с фиксированным boost :: wregex, а затем использовать ее из нескольких потоков, не беспокоясь о внутреннем состоянии регулярного выражения (если Boost был скомпилирован с BOOST_HAS_THREADS)?
например
boost::wregex g_regex( L"common|test" );
затем вызовите несколько потоков:
if ( boost::regex_search( test_str, g_regex ) )
...
Класс basic_regex и его typedefs regex и wregex являются поточно-ориентированными, так как скомпилированные регулярные выражения можно безопасно разделять между потоками. Алгоритмы сопоставления regex_match, regex_search и regex_replace являются реентерабельными и поточно-ориентированными. Класс match_results теперь потокобезопасен, так как результаты сопоставления могут быть безопасно скопированы из одного потока в другой (например, один поток может находить совпадения и помещать экземпляры match_results в очередь, в то время как другой поток выталкивает их с другого конца), в противном случае используйте отдельный экземпляр match_results для потока.
Других решений пока нет …