在OpenMP代码中使用C ++互斥锁是否安全?

时间:2018-11-27 22:04:39

标签: c++ c++11 openmp

在OpenMP 4.5代码中使用C ++ 11 std::mutex是否安全?我的想法是,我正在使用一个日志库,该日志库使用C ++互斥锁保护每个std::cout,以便在与多个线程一起运行时,不会扰乱cout的输出。在我的OpenMP代码中,我可能想使用此日志记录库来打印一些消息。这样做安全吗?

1 个答案:

答案 0 :(得分:0)

不,这不安全。

只有最新的OpenMP版本(5.0)才“指定”与C ++ 11功能的交互。它是通过使用“ C ++ 11库[...]可能导致未指定的行为”来表示的。

在实践中,这可能会很好地工作,但是在“未指定行为的土地”上工作绝对不是可取的。您可能会发现超出标准的实现,并允许这种组合。

涉及互斥锁时,建议将其保留在一个范例中并使用OpenMP提供的互斥锁。