do { while (test_and_set(&lock))
; /* do nothing */
/* critical section */
lock = false;
/* remainder section */
} while (true);
boolean test_and_set (boolean *target)
{
boolean rv = *target;
*target = TRUE;
return rv:
}
我不明白它应该如何工作,因为无论 while (test_and_set(&lock) 返回什么,无论是真还是假, do{} 代码仍然会运行临界区。它什么都不做,然后立即运行关键部分,那么这如何帮助同步线程?