解析test_and_set

时间:2013-09-25 04:58:43

标签: synchronization locking

我无法理解test_and_set,所以我想确保正确解析算法。

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:
}

1st:lock初始化为false,test_and_set返回false但将lock更改为true;因此,什么都不做 2nd:lock设置为true,test_and_set返回true并将lock更改为true;因此,关键部分运行,锁定设置为false。

冲洗并重复

1 个答案:

答案 0 :(得分:0)

  

1st:lock初始化为false,test_and_set返回false但将lock更改为true;因此,什么都不做

不,test_and_set返回false,因此退出while循环并执行关键部分

lock设置为true以防止其他进程在关键部分执行时从test_and_set变为false。