, . , - , , .
. . , , , .
, 0, , 1, .
, .
, . , .
, . . . , , , 0, . , , , . , , , . , , . , (, , 5 ntium). ( - ), .
: , , , , , , , - . .
|
|
3.
(semaphore) - . , , .
, , . 0 1. , 0 1, . - signal wait. signal 1, . wait , . 0, 1, , wait, . 0, , wait, ( ) , signal. wait ( ), .
, wait . wait . wait , test_and_set.
, signal . , FIFO (Firstln, FirstOut - , ), , .
"" signal wait . signal wait .
:
program sem_example (* *)
var P1: semaphore
Begin
P1:= 1;
Cobegin
while true do (* *)
begin (* *)
wait (P1);
(* *)
signal (P1);
end; (* *)
while true do (* *)
begin (* *)
wait (Pl);
(* *)
signa l(Pl);
end; (* *)
coend;
end. (* sem_example *)
, . - , . , . . - , , , , .
.
wait (Pl) wait (P2)
wait (P2) wait (Pl)
|
|
(* *) (* *)
signal (Pl) signa l(P2)
signal (P2) signal (Pl)
- . wait , wait, , . , , , . , .
. , , , :
Process " " Process " "