中国开发网: 论坛: 程序员情感CBD: 贴子 703373
Water
俺正在看Linux Device Drivers,关于原子操作有个地方不大明白。
书中说在内核代码中有这样的例子:
/* 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结果的正确性?

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录