从一个讨论开始 this question .
如果没有cas操作,如何编写spinlock呢?
另一个问题是:
内存排序模型是这样的,写操作将是原子的(如果两个并发线程同时写入一个内存位置,则结果将是一个或另一个)。平台不支持原子比较和设置操作。
维基百科关于 spinlock 说你必须使用 Peterson's algortihm ,它使用另一个标志来指示轮到哪个进程进入临界区(如果需要)。