我正在尝试实现以下功能:lock(m)和unlock(m),其中m是一个布尔变量(互斥锁)。
到目前为止,我有TestAndSet的实现:
function TestAndSet(boolean_ref lock) {
boolean initial = lock;
lock = true;
return initial;
}
我正在寻找一种伪代码解决方案。因此,如何根据我的TestAndSet方法实现锁定和解锁?
答案 0 :(得分:2)
如果你可以忙着等待,锁定/解锁的代码可能是:
lock(lock m):
while (test_and_set(m))
;
unlock(lock m):
m = false;
您可以在here上找到有关此主题的更多信息。