匹配正则表达式线程不安全吗?

时间:2017-06-23 16:30:16

标签: c++ regex multithreading

我有一个非常小的功能,似乎在我的一些线程中导致分段错误,但是我的代码工作得很好,如果我为这个函数的调用添加一个锁定保护:

int getROCIndexByName(const std::string& t_name)
{
   std::smatch match;
   std::regex_match(t_name, match, std::regex(R"(.*ROC ?(\d+))"));
   return std::stoi(match[1].str()) - 1;
}

这可能在某种程度上是线程不安全的,或者我只是幸运地阻止我的代码通过添加警卫围绕这个?谢谢!

1 个答案:

答案 0 :(得分:0)

在访问匹配[1]之前,您应该检查确实存在匹配。