Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are posix regcomp and regexec threadsafe? In specific, on GNU libc?

Two separate questions here really: Can I use regexes in a multithreaded program without locking and, if so, can I use the same regex_t at the same time in multiple threads? I can't find an answer on Google or the manpages.

like image 629
Alex Avatar asked Dec 10 '10 00:12

Alex


1 Answers

http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html

2.9.1 Thread-Safety

All functions defined by this volume of POSIX.1-2008 shall be thread-safe, except that the following functions1 need not be thread-safe.

...

regexec and regcomp are not in that list, so they are required to be thread-safe.

See also: http://www.opengroup.org/onlinepubs/9699919799/functions/regcomp.html

Part of the rationale text reads:

The interface is defined so that the matched substrings rm_sp and rm_ep are in a separate regmatch_t structure instead of in regex_t. This allows a single compiled RE to be used simultaneously in several contexts; in main() and a signal handler, perhaps, or in multiple threads of lightweight processes.

like image 85
R.. GitHub STOP HELPING ICE Avatar answered Nov 12 '22 02:11

R.. GitHub STOP HELPING ICE