在OpenMP 4.5代码中使用C ++ 11 std::mutex
是否安全?我的想法是,我正在使用一个日志库,该日志库使用C ++互斥锁保护每个std::cout
,以便在与多个线程一起运行时,不会扰乱cout
的输出。在我的OpenMP代码中,我可能想使用此日志记录库来打印一些消息。这样做安全吗?
答案 0 :(得分:0)
不,这不安全。
只有最新的OpenMP版本(5.0)才“指定”与C ++ 11功能的交互。它是通过使用“ C ++ 11库[...]可能导致未指定的行为”来表示的。
在实践中,这可能会很好地工作,但是在“未指定行为的土地”上工作绝对不是可取的。您可能会发现超出标准的实现,并允许这种组合。
涉及互斥锁时,建议将其保留在一个范例中并使用OpenMP提供的互斥锁。