, ( ) , .
, , . , . A , B . , , N , :
A: | B: |
... R1:= N; R1:= R1 - 1; N:= R1; ... | ... R2:= N; R2:= R2 + 1; N:= R2; ... |
, . , , , :
1) R1:= N; R2:= N; R2:= R2 + 1; N:= R2; R1:= R1 - 1; N:= R1;
2) R2:= N; R2:= R2 + 1; R1:= N; R1:= R1 - 1; N:= R1; N:= R2;
3) R1:= N; R1:= R1 - 1; N:= R1; R2:= N; R2:= R2 + 1; N:= R2;
? , 1 N 1, 2 1, 3 N, , .
.
, .
, , .
, , .
: , .
, , . , , , .
. . , , .
.
, , .
N. , , .
|
|
?
, ( ) . , Free, . , , :
A: | B: |
... while not Free do ; Free:= false; ( A) Free:= true; ... | ... while not Free do ; Free:= false; ( B) Free:= true; ... |
while , , .
- Free A B?
, , , : Free. .
, . , , . , . , . Free . , , ( ) , , , .
, , . , , :
, ;
, ;
.
. /3/ /4/ .
( , ), , .
. flagA, flagB, false, turn: A..B.
A: | B: |
... flagA:= true; turn:= B; while flagB and turn = B do ; ( A) flagA:= false; ... | ... flagB:= true; turn:= A; while flagA and turn = A do ; ( B) flagB:= false; ... |
, . -, , , . -, .
|
|
. , , , , . , , Pentium. , .