阅读文本std::condition_variable
我遇到了这句话:
即使共享变量是原子的,也必须在互斥锁下进行修改,才能正确地将修改发布到等待线程。
我的问题是这样的:
如果不是“与 POD 一起使用的无锁代码”,那么原子有什么用?
更新
看起来我的问题有些混乱:(
引用文本中的“共享变量”与“条件变量”不同。请参阅同一页面的此引用:
...直到另一个线程同时修改共享变量(条件),并通知条件变量
请不要回答“为什么我们需要使用带有条件变量的互斥锁”或“条件等待如何工作”,而是提供有关使用互斥锁如何“正确发布”对等待线程的原子修改的信息,即是否需要在互斥锁下完成类似++counter;
(而不是测试)的表达式?if(counter == 0)