Lock-free编程简介-思考题参考
下面有一个简单的例子,这段代码不持有互斥量,但它也不是lock-free的。
一开始X=0。、如何调度两个执行下面代码的线程,让他们都不能退出循环。
while (X == 0) //a { X = 1 - X; //b }
两个线程记为A、B。线程A执行代码行a记为Aa,其他类似。
如下调度顺序可保证A、B都无法退出循环
Aa //x==0
Ba //x==0
Ab //x==1
Bb //x==0
Aa //x==0
Ba //x==0
Ab //x==1
Bb //x==0
......
每四行一组,一组内的1、2行,3、4行可交换随意交换顺序。

浙公网安备 33010602011771号