Water:
俺正在看Linux Device Drivers,关于原子操作有个地方不大明白。
[阅读: 314] 2009-03-03 09:13:38
书中说在内核代码中有这样的例子:
/* try to set lock */
while (test_and_set_bit(nr, addr) != 0)
wait_for_a_while();
/* do your work */
/* release lock, and check... */
if (test_and_clear_bit(nr, addr) == 0)
something_went_wrong(); /* already released: error */
test_and_set_bit不是一个原子操作,怎么还能保证lock结果的正确性?