repeat: repeat:
f[1] ! true; f[2] ! true;
Turn ! 2; Turn ! 1;
wait (f[2] = false wait (f[1] = false
or Turn = 1); or Turn = 2);
Critical Section(1); Critical Section(2);
f[1] ! false; f[2] ! false;
f[1]!true f[2]!true
Turn!1
Turn!2
Turn=2
C.S.(2)
f[2]!false
f[2]=false
C.S.(1)
✔
☛
• R D
• P
• " # P
• "
• #
• "
• R $ D
• % % R ! D
% " % "
•
•
• %
$%
•
• % % %
• % " R
• P R
• "
% "
&%
• ' % (
• ' % ) % (
• % ' ) (
!
$
"
" * & ! !
" + * &
+ + + !
!
"
#
% " "
, "
! "
LS S
✔
✔
☛
L
✂
✂
- $ . / +- $ . / +- / ! $
!
" +
" N ) L
" L
L
✔
✔
✔
☛
!
(
* &% % ' % ( %
! ! ! * &
SMC
! ! ! ) ) !
! ) ! ) " * &
!
A $ $ # SMC #
✔
✔
✔
✔
☛
! $
$
" $ % % " " % " %
• * &%
• +%
LA A
$ $
$ $
•
•
•
•
" " $%
✂
✂
✂
0
✂
✂
✂
0