【发布时间】:2022-01-18 12:13:17
【问题描述】:
假设有3个线程,
线程 1 和 2 将自动增加或减少全局变量 X。
线程 1:
atomic_increase(X)
线程 2:
atomic_decrease(X)
线程 3 将检查 X 是否大于某个预定义的值并相应地执行操作。
线程 3:
if( X > 5 ) {... logic 1 ...}
else {... logic 2 ....}
我认为atomic_xxx 操作还不够。它们只能在线程 1 和 2 之间同步修改。
如果X被线程1或2更改在线程3完成比较后进入logic 1。
修改或读取X时是否必须使用互斥锁来同步所有3个线程?
添加 1
顺便说一句,逻辑 1 和逻辑 2 不会修改 X。
【问题讨论】:
标签: multithreading atomic