Изменения

Перейти к: навигация, поиск

Алгоритмы взаимного исключения

379 байт добавлено, 10:53, 25 сентября 2018
Алгоритмы взаимного исключения
'''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>)===
 
==См. также==
302
правки

Навигация