302
правки
Изменения
→Алгоритмы взаимного исключения
'''shared int''' level[N]
'''shared int''' victim[N]
'''def lock'''lock:
'''for''' j = 1..N-1:
level[id] = j
'''pass'''
'''def unlock'''unlock:
level[id] = 0
===Алгоритм Лампорта (вариант <tex>1</tex>)===
'''threadlocal int''' id // 0 to N-1
'''shared boolean''' want[N] '''init''' false
'''shared int''' label[N] '''init''' 0
'''def''' lock:
want[id] = true
label[id] = max(label) + 1
while exists k: k != id '''and'''
want[k] '''and'''
(label[k], k) < (label[id], id) :
'''pass'''
'''def''' unlock:
want[id] = false
===Алгоритм Лампорта (вариант <tex>2</tex>)===
==См. также==