Является ли статический экземпляр boost :: wregex поточно-ориентированным?

Безопасно ли объявлять статическую / глобальную переменную с фиксированным boost :: wregex, а затем использовать ее из нескольких потоков, не беспокоясь о внутреннем состоянии регулярного выражения (если Boost был скомпилирован с BOOST_HAS_THREADS)?

например

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

затем вызовите несколько потоков:

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

5

Решение

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


Класс basic_regex и его typedefs regex и wregex являются поточно-ориентированными, так как скомпилированные регулярные выражения можно безопасно разделять между потоками. Алгоритмы сопоставления regex_match, regex_search и regex_replace являются реентерабельными и поточно-ориентированными. Класс match_results теперь потокобезопасен, так как результаты сопоставления могут быть безопасно скопированы из одного потока в другой (например, один поток может находить совпадения и помещать экземпляры match_results в очередь, в то время как другой поток выталкивает их с другого конца), в противном случае используйте отдельный экземпляр match_results для потока.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector