Скачиваний:
34
Добавлен:
01.05.2014
Размер:
13.24 Кб
Скачать
я_я13.7. ЋЎйЁ© ᥬ д®а Є Є б।бвў® б®ЎлвЁ©­®© бЁ­еа®­Ё§ жЁЁ

‘Ґ¬ д®а, Є®в®ал© Ўл« а бᬮв७ ў ЇаҐ¤л¤г饬 а §¤Ґ«Ґ,
­ §лў Ґвбп ¤ў®Ёз­л¬ ᥬ д®а®¬.
ЋЎйЁ© ᥬ д®а ў¬Ґбв® д« Ј  § ­пв®бвЁ аҐбгаб  б®¤Ґа¦Ёв
бзҐвзЁЄ.
‘®¤Ґа¦Ё¬®Ґ бзҐвзЁЄ  Ї®§ў®«пҐв ®жҐ­Ёвм б®бв®п­ЁҐ ᥬ д®а .
Ќ ¤ ᥬ д®а®¬ ўлЇ®«­повбп ¤ўҐ ®ЇҐа жЁЁ, Є®в®алҐ ­ §лў овбп P
Ё V ®ЇҐа жЁп¬Ё.
P ®ЇҐа жЁп ®ЇаҐ¤Ґ«пҐв гб«®ўЁҐ Ў«®ЄЁа®ўЄЁ Їа®жҐбб  Ё ¬®¦Ґв
Ўлвм ЁбЇ®«м§®ў ­  ЇаЁ ўе®¤Ґ ў ЄаЁвЁзҐбЄЁ© гз бв®Є, V ®ЇҐа жЁп
®ЇаҐ¤Ґ«пҐв гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ Їа®жҐбб  Ё ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ­ 
ЇаЁ ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ .

„ ¤Ё¬ д®а¬ «м­®Ґ ®ЎкҐЄв­®-®аЁҐ­вЁа®ў ­­®Ґ ®ЇЁб ­ЁҐ ᥬ д®а .

Type
PSemaphore = ^TSemaphore;
TSemaphore = Object
Count : Integer;
List : PList;
Constructor Init;
Destructor Done; Virtual;
Procedure P;
Procedure V;
End {TSemaphore};

Constructor TSemaphore.Init;
Begin
Count := 1;
List := New(PList, Init);
End {TSemaphore.Init};

Destructor TSemaphore.Done;
Begin
Dispose(List, Done);
End {TSemaphore.Done};

Procedure TSemaphore.P;
Begin
‡ ЇаҐв_ЏаҐалў ­Ё©;
Dec(Count);
If Count < 0 Then Begin
List^.Insert(’ҐЄгйЁ©_Їа®жҐбб);
Џ…ђ…ЌЂ‡ЌЂ—€’њ_ЏђЋ–…‘‘Ћђ;
End {If};
ђ §аҐиҐ­ЁҐ_ЏаҐалў ­Ё©;
End {TSemaphore.P};

Procedure TSemaphore.V;
Begin
‡ ЇаҐв_ЏаҐалў ­Ё©;
Inc(Count);
If Count <= 0 Then Begin
List^.Remove(ЏҐаўл©_Їа®жҐбб);
ЋзҐаҐ¤м_Ј®в®ўле^.Insert(’ҐЄгйЁ©_Їа®жҐбб);
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…(’ҐЄгйЁ©_Їа®жҐбб,ЏҐаўл©_Їа®жҐбб);
End {If};
ђ §аҐиҐ­ЁҐ_ЏаҐалў ­Ё©;
End {TSemaphore.P};
Var
Semaphore : PSemaphore;
Begin
Semaphore := New(PSemaphore, Init);
...
Dispose(Semaphore, Done);
End.

Џа®жҐбб: Semaphore^.P;
ЉаЁвЁзҐбЄЁ© гз бв®Є;
Semaphore^.V;

я2‡ ¬Ґз ­ЁҐ.я0 ќв® Џ бЄ «м-Ї®¤®Ў­ п § ЇЁбм, Є®в®а п ў§пв  ­ ¬Ё
Є Є б।бвў® ®ЇЁб ­Ёп. ‚ «ЁвҐа вгॠ¬®¦­® ўбваҐвЁвм Ё ¤агЈЁҐ
бЇ®б®Ўл ®ЇЁб ­Ёп ᥬ д®а , ­Ґ ¬Ґ­пойЁҐ бгвЁ ¤Ґ« .

я1”г­ЄжЁ®­Ёа®ў ­ЁҐ ᥬ д®а 

„ў  Є« бб  § ¤ з ¬®Јгв Ўлвм аҐиҐ­л б ЁбЇ®«м§®ў ­ЁҐ¬
ᥬ д®а .
1) ЃҐ§а §«Ёз­®, Є Є®© Ё§ Їа®жҐбб®ў ЇҐаўл¬ Ї®¤®©¤Ґв Є
ЄаЁвЁзҐбЄ®¬г гз бвЄг.
ЏаЁ¬Ґал ¬л а бб¬ ваЁў «Ё. ‚ᥠࠢ­®, Є Є®© Їа®жҐбб ЇҐаўл¬
Ё­ЄаҐ¬Ґ­вЁагҐв ЇҐаҐ¬Ґ­­го N ў ЇаЁ¬ҐаҐ ЇаҐ¤л¤г饩 «ҐЄжЁЁ.
2) ЌҐЎҐ§а §«Ёз­®, Є Є®© Ё§ Їа®жҐбб®ў ЇҐаўл¬ Ї®¤®©¤Ґв Є
ЄаЁвЁзҐбЄ®¬г гз бвЄг.
ЏаЁ¬Ґа б ®Ў¬Ґ­®¬ ¤ ­­л¬Ё зҐаҐ§ п祩Єг Ї ¬пвЁ.

Џа®жҐбб 1: Џа®жҐбб 2:
... ...
‡ ЇЁбм ў џЏ; —⥭ЁҐ Ё§ џЏ;
... ...
џб­®, зв® ®ЇҐа жЁо з⥭Ёп ¬®¦­® Їа®ў®¤Ёвм в®«мЄ® Ї®б«Ґ
®ЇҐа жЁЁ § ЇЁбЁ.

я_я1ђ бᬮваЁ¬ б­ з «  ЇҐаўго § ¤ зг.

S := New(PSemaphore, Init);

Џа®жҐбб 1 Џа®жҐбб 2 Џа®жҐбб 3

... ... ...
S^.P; S^.P; S^.P;
Ља. гз-Є; Ља. гз-Є; Ља. гз-Є;
S^.V; S^.V; S^.V;
... ... ...

Dispose(S, Done);

Џгбвм Џ1 ЇҐаўл¬ Ї®¤®иҐ« Є ЄаЁвЁзҐбЄ®¬г гз бвЄг. Count = 1.

Dec(Count); Count = 0;

‚室Ёв ў ЄаЁвЁзҐбЄЁ© гз бв®Є, в.Є. гб«®ўЁҐ Ў«®ЄЁа®ўЄЁ
Count < 0.

Џгбвм Џ2 ўв®ал¬ Ї®¤®иҐ« Є ЄаЁвЁзҐбЄ®¬г гз бвЄг. Count = 0.

Dec(Count); Count = -1;

‚бв Ґв ў ®зҐаҐ¤м ᥬ д®а , в.Є. ўлЇ®«­пҐвбп гб«®ўЁҐ
Ў«®ЄЁа®ўЄЁ.

Џгбвм Џ3 ваҐвмЁ¬ Ї®¤®иҐ« Є ЄаЁвЁзҐбЄ®¬г гз бвЄг. Count = -1.

Dec(Count); Count = -2;

‚бв Ґв ў ®зҐаҐ¤м ᥬ д®а  §  Џ2, в.Є. ўлЇ®«­пҐвбп гб«®ўЁҐ
Ў«®ЄЁа®ўЄЁ.

’ҐЇҐам Џ1 ўл室Ёв Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ . Count = -2.

Inc(Count); Count = -1;

ЂЄвЁўЁ§ЁагҐв Їа®жҐбб Џ2, Є Є ЇҐаўл© ў ®зҐаҐ¤Ё, в.Є.
ўлЇ®«­пҐвбп гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ Count <= 0. Џа®жҐбб Џ2 ўе®¤Ёв ў
ЄаЁвЁзҐбЄЁ© гз бв®Є.

’ҐЇҐам Џ2 ўл室Ёв Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ . Count = -1.

Inc(Count); Count = 0;

ЂЄвЁўЁ§ЁагҐв Їа®жҐбб Џ3, Є Є ЇҐаўл© ў ®зҐаҐ¤Ё, в.Є.
ўлЇ®«­пҐвбп гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ Count <= 0. Џа®жҐбб Џ3 ўе®¤Ёв ў
ЄаЁвЁзҐбЄЁ© гз бв®Є.

’ҐЇҐам Џ3 ўл室Ёв Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ . Count = 0.

Inc(Count); Count = 1;

ЂЄвЁўЁ§Ёа®ў вм ­ҐЄ®Ј® Ё ­Ґ ўлЇ®«­пҐвбп гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ
Count <= 0.
‘Ґ¬ д®а ЇаЁе®¤Ёв ў Ёб室­®Ґ б®бв®п­ЁҐ.

я2‘ў®©бвў® ᥬ д®а : я0 …б«Ё Count < 0, в® |‘ount| а ўҐ­ зЁб«г
Їа®жҐбб®ў, бв®пйЁе ў ®зҐаҐ¤Ё ᥬ д®а .

я_я1ђ бᬮваЁ¬ ⥯Ґам ўв®аго § ¤ зг.

ђ бб¬ ваЁў п ўв®аго § ¤ зг, ¬л Ї®¤ЎЁа Ґ¬бп Є Ё§г祭Ёо
¬Ґв®¤®ў ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё ў п¤аҐ.
ЋЎй п б奬  ў§ Ё¬®¤Ґ©бвўЁп ¤ўге Їа®жҐбб®ў ЇаЁ ®Ў¬Ґ­Ґ ¤ ­­л¬Ё
ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬.

Џа®жҐбб 1 Џа®жҐбб 2
... ...
‡ ЇЁб вм ў џЏ; …б«Ё ­Ґ § ЇЁб ­®, в® †„Ђ’њ;
‘®®ЎйЁвм б।Ґ, зв® § ЇЁб «; Џа®зЁв вм Ё§ џЏ;
... ...

ђҐиЁ¬ гЄ § ­­го § ¤ зг б Ї®¬®ймо ᥬ д®а®ў.
€­ЁжЁ «Ё§Ёа㥬 ᥬ д®а S ў 0, в.Ґ. S^.Count := 0.

Џ1 Џ2
... ...
‡ ЇЁб вм ў џЏ; S^.P;
S^.V; Џа®зЁв вм Ё§ џЏ;
... ...

Џгбвм Їа®жҐбб Џ1 § ЇЁб « ў џЏ ¤ ­­лҐ Ё ЇҐаўл¬ Ї®¤®иҐ« Є
ўлЇ®«­Ґ­Ёо ®ЇҐа жЁЁ S^.V .

Inc(Count); Count = 1;

’.Є. гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ Їа®жҐбб®ў ў ®ЇҐа жЁЁ S^.V -
Count <= 0, в®  ЄвЁўЁ§Ёа®ў вм ­ҐЄ®Ј®.

Џгбвм ⥯Ґам Є ўлЇ®«­Ґ­Ёо ®ЇҐа жЁЁ S^.P Ї®¤®иҐ« Їа®жҐбб Џ2.

Dec(Count); Count = 0;

’.Є. гб«®ўЁҐ Ў«®ЄЁа®ўЄЁ ў ®ЇҐа жЁЁ S^.P - ‘ount < 0, в®
Їа®жҐбб Џ2 ­Ґ Ў«®ЄЁагҐвбп Ё ЇҐаҐе®¤Ёв Є з⥭Ёо џЏ.

’ ЄЁ¬ ®Ўа §®¬, з⥭ЁҐ Їа®Ё§®и«® Ї®б«Ґ § ЇЁбЁ.

Џгбвм ⥯Ґам ЇҐаўл¬ Ї®¤®иҐ« Є ўлЇ®«­Ґ­Ёо ®ЇҐа жЁЁ S^.P
Їа®жҐбб Џ2.
Dec(Count); Count = -1;

‚лЇ®«­пҐвбп гб«®ўЁҐ Ў«®ЄЁа®ўЄЁ Ё Їа®жҐбб Џ2 ўбв Ґв ў
®зҐаҐ¤м, ­Ґ Їа®зЁв ў п祩Єг Ї ¬пвЁ.

’ҐЇҐам Їа®жҐбб Џ1 ЇЁиҐв ў џЏ Ё Ї®¤е®¤Ёв Є ўлЇ®«­Ґ­Ёо
®ЇҐа жЁЁ S^.V.
Inc(Count); Count = 0;

’.Є. гб«®ўЁҐ  ЄвЁўЁ§ жЁЁ Count <= 0 ўлЇ®«­пҐвбп, в®
Їа®Ёб室Ёв  ЄвЁўЁ§ жЁп Їа®жҐбб  Џ2 Ё з⥭ЁҐ џЏ.

’ ЄЁ¬ ®Ўа §®¬, з⥭ЁҐ ®Їпвм Їа®Ё§®и«® Ї®б«Ґ § ЇЁбЁ.
„«п аҐиҐ­Ёп ¤ ­­®© § ¤ зЁ ў ᮢ६Ґ­­ле Ћ‘ ЁбЇ®«м§говбп
ᥬ д®ал б®ЎлвЁ©.

ЋЎлз­® Їа®жҐббл - нв® ­ҐЄЁҐ жЁЄ«ЁзҐбЄЁҐ Їа®Ја ¬¬л. Џ®н⮬г,
Ґб«Ё ®аЈ ­Ё§®ў вм § ЇЁбм Ё з⥭ЁҐ џЏ в Є, Є Є нв® ®ЇЁб ­® ўлиҐ,
в® ¬®¦Ґв Ё¬Ґвм ¬Ґбв® б«Ґ¤гой п бЁвг жЁп:
Ї®Є  Їа®жҐбб Џ2 ­Ґ Ї®¤®иҐ« Є ®ЇҐа жЁЁ з⥭Ёп, Їа®жҐбб Џ1
¬®¦Ґв ўлЇ®«­Ёвм ­ҐбЄ®«мЄ® ®ЇҐа жЁ© § ЇЁбЁ, ў®§ўа й пбм Є ­Ґ© ў
жЁЄ«Ґ. ’.Ґ. ¬®¦Ґв Їа®Ё§®©вЁ Ї®вҐап ¤ ­­ле.
Џ®н⮬г, зв®Ўл Ї®вҐаЁ ¤ ­­ле ­Ґ Їа®Ёб室Ё«Ё, ­Ґ®Ўе®¤Ё¬®
®аЈ ­Ё§®ў вм бЁ­еа®­Ё§ жЁо в Є, зв®Ўл Є®«ЁзҐбвў® § ЇЁбҐ©
а ў­п«®бм Є®«ЁзҐбвўг з⥭Ё©.
‘«Ґ¤гой п б奬  Ї®§ў®«пҐв н⮠ᤥ« вм.

Џ1 Џ2
While True Do Begin While True Do Begin
... ...
‡ ЇЁбм ў џЏ; S^.P;
S^.V; —⥭ЁҐ Ё§ џЏ;
A^.P; A^.V;
... ...
End {While}; End {While};

ЏҐаўл© Їа®жҐбб ЇЁиҐв ў џЏ,  ЄвЁўЁ§ЁагҐв Џ2, Ґб«Ё в®в 㦥
Ў«®ЄЁа®ў ­ ў ®зҐаҐ¤Ё ЇҐаў®Ј® ᥬ д®а ,   б ¬ Ў«®ЄЁагҐвбп ў
®зҐаҐ¤Ё ўв®а®Ј® ᥬ д®а .
ЂЄвЁўЁ§ жЁп Џ1 ўлЇ®«­пҐвбп Їа®жҐбᮬ Џ2 Ї®б«Ґ з⥭Ёп џЏ.
ЏҐаўл© ᥬ д®а ЁбЇ®«м§гҐвбп Є Є Ї®¤вўҐа¦¤Ґ­ЁҐ § ЇЁбЁ,  
ўв®а®© - Є Є Ї®¤вўҐа¦¤Ґ­ЁҐ з⥭Ёп.

Џ®б«Ґ¤­Ё© ЇаЁ¬Ґа д ЄвЁзҐбЄЁ пў«пҐвбп ЇаЁ¬Ґа®¬ ЎгдҐа  ­  ®¤­г
п祩Єг.
я2‡ ¬Ґз ­Ёп

1) Ќ «ЁзЁҐ ®зҐаҐ¤Ё ў ᥬ д®аҐ - нв®, ў®®ЎйҐ Ј®ў®ап, ў®Їа®б
ॠ«Ё§ жЁЁ. ‚¬Ґбв® ®зҐаҐ¤Ё ¬®¦Ґв Ўлвм ®аЈ ­Ё§®ў ­® " ЄвЁў­®Ґ
®¦Ё¤ ­ЁҐ".
2) ЏаЁ ®ЇЁб ­ЁЁ бвагЄвгал ᥬ д®а  ¬л ­Ґ¬­®Ј® ®вбвгЇЁ«Ё ®в
вЁЇ®ў®© бвагЄвгал ЇаЁ¬ЁвЁў  п¤а . Ѓг¤Ґ¬ Ї®¤е®¤Ёвм Є бвагЄвгаҐ
ЇаЁ¬ЁвЁў  п¤а  ЈЁЎЄ®. ЏаЁ¬ЁвЁўл ¬®Јгв Ўлвм ॠ«Ё§®ў ­л
Ї®-а §­®¬г.

я_я23.8. ‘।бвў  бЁ­еа®­Ё§ жЁЁ ў бгйҐбвўгойЁе ®ЇҐа жЁ®­­ле б। е

‚ᥠЋ‘ ў Є зҐб⢥ б।бвў бЁ­еа®­Ё§ жЁЁ ЎҐагв §  ®б­®ўг
ᥬ д®ал, а бᬮв७­лҐ ўлиҐ. •®вп Ёе ॠ«Ё§ жЁп ­  Є ¦¤®©
Ї« вд®а¬Ґ ¬®¦Ґв Ўлвм а §«Ёз­®©.

ђ бᬮваЁ¬ ЇаЁ¬Ґал ᥬ д®а®ў ў а §«Ёз­ле б। е.

я2NOVELL NETWARE
‚ NetWare бгйҐбвўгҐв ¤ў  Є« бб  бҐ¬ д®а®ў - «®Є «м­лҐ Ё
бҐвҐўлҐ.
„«п ®вЄалвЁп ᥬ д®а  ўлЇ®«­пҐвбп дг­ЄжЁп
OpenLocalSemaphore(). ќв  дг­ЄжЁп Ё­ЁжЁ «Ё§ЁагҐв бзҐвзЁЄ ᥬ д®а 
Ё ў®§ўа й Ґв ббл«Єг ­  ᥬ д®а, Є®в®а п ЁбЇ®«м§гҐвбп ў ®бв «м­ле
®ЇҐа жЁпе.
„«п § ЄалвЁп ЁбЇ®«м§гҐвбп дг­ЄжЁп CloseLocalSemaphore().
Ђ­ «®Ј ®ЇҐа жЁЁ P - WaitOnLocalSemaphore(),  ­ «®Ј ®ЇҐа жЁЁ
V - SignalLocalSemaphore().
Њ®¦­® Їа®зЁв вм б®бв®п­ЁҐ бзҐвзЁЄ  ᥬ д®а  дг­ЄжЁҐ©
ExamineLocalSemaphore().
”г­ЄжЁп TimedWaitOnLocalSemaphore() ®ЎҐбЇҐзЁў Ґв Ў«®ЄЁа®ўЄг
Їа®жҐбб  ­Ґ в®«мЄ® ¤®  ЄвЁўЁ§ жЁЁ ҐЈ® ®ЇҐа жЁҐ©
SignalLocalSemaphore(), ­® ¤® ЁбвҐзҐ­Ёп в ©¬ гв .

„«п а Ў®вл б ЄаЁвЁзҐбЄЁ¬Ё ᥪжЁп¬Ё ¬®Јгв Ўлвм ЁбЇ®«м§®ў ­л
б«Ґ¤гойЁҐ дг­ЄжЁЁ.
EnterCritSec() - ўе®¤ ў ЄаЁвЁзҐбЄго ᥪжЁо. Ќ® ЇаЁ ўл§®ўҐ
нв®© дг­ЄжЁЁ ЇаЁ®бв ­ ў«Ёў овбп ўбҐ ­ЁвЁ, ¤ ¦Ґ ­Ґ бўп§ ­­лҐ б
ЄаЁвЁзҐбЄ®© ᥪ樥©.
ExitCritSec() - ўл室 Ё§ ЄаЁвЁзҐбЄ®© ᥪ樨.

я2MICROSOFT NT
‚ Windows NT бгйҐбвўгҐв 4 ®б­®ў­ле ®ЎкҐЄв  бЁ­еа®­Ё§ жЁЁ -
Mutex, ᥬ д®а, б®ЎлвЁҐ, ЄаЁвЁзҐбЄ п ᥪжЁп.

„«п ®ЎкҐЄв  Mutex бгйҐбвўгов б«Ґ¤гойЁҐ ®ЇҐа жЁЁ.
CreateMutex() - ᮧ¤ ­ЁҐ ®ЎкҐЄв .
OpenMutex() - Ї®«г祭ЁҐ ¤®бвгЇ  Є а ­ҐҐ ᮧ¤ ­­®¬г ®ЎкҐЄвг.
RequestMutex() -  ­ «®Ј® ®ЇҐа жЁЁ P.
ReleaseMutex() -  ­ «®Ј ®ЇҐа жЁЁ V.
CloseHandle() - § ЄалвЁҐ ®ЎкҐЄв .

‘Ґ¬ д®а - Ў®«ҐҐ б«®¦­л© ®ЎкҐЄв бЁ­еа®­Ё§ жЁЁ. „«п а Ў®вл б
­Ё¬ ЁбЇ®«м§говбп б«Ґ¤гойЁҐ дг­ЄжЁЁ.
CreateSemaphore() - ᮧ¤ ­ЁҐ ᥬ д®а .
OpenSemaphore() - ®вЄалвЁҐ ᥬ д®а .
WaitForSingleObject() - ®¦Ё¤ ­ЁҐ ­  ᥬ д®аҐ.
ReleaseSemaphore() - ®бў®Ў®¦¤Ґ­ЁҐ ᥬ д®а .
CloseHandle() - § ЄалвЁҐ ®ЎкҐЄв .

„«п а Ў®вл б ᥬ д®а ¬Ё б®ЎлвЁ© Ё¬Ґовбп б«Ґ¤гойЁҐ дг­ЄжЁЁ.
CreateEvent() - ᮧ¤ ­ЁҐ ᥬ д®а  б®ЎлвЁ©.
OpenEvent() - ®вЄалвЁҐ бгйҐбвўго饣® ᥬ д®а  б®ЎлвЁ©.
SetEvent() - бЁЈ­ «Ё§ жЁп ® ­ бвгЇ«Ґ­ЁЁ б®ЎлвЁп.
WaitForSingleObject() - ®¦Ё¤ ­ЁҐ б®ЎлвЁп.

„«п а Ў®вл б ЄаЁвЁзҐбЄЁ¬Ё ᥪжЁп¬Ё ЁбЇ®«м§говбп б«Ґ¤гойЁҐ
дг­ЄжЁЁ.
IntializeCriticalSection() - Ё­ЁжЁ «Ё§ жЁп бЇҐжЁ «м­ле
бвагЄвга, ᮧ¤ ў Ґ¬ле ¤«п ¤®бвгЇ  Є ЄаЁвЁзҐбЄЁ¬ ᥪжЁп¬.
EnterCriticalSection() - ўе®¤ ў ЄаЁвЁзҐбЄго ᥪжЁо.
LeaveCriticalSection() - ўл室 Ё§ ЄаЁвЁзҐбЄ®© ᥪ樨.
DeleteCriticalSection() - г¤ «Ґ­ЁҐ бвагЄвга ¤ ­­ле,
ᮧ¤ ­­ле ¤«п ¤®бвгЇ  Є ЄаЁвЁзҐбЄЁ¬ ᥪжЁп¬.

я2IBM OS/2
‚ OS/2 Ё¬ҐҐвбп ваЁ вЁЇ  ᥬ д®а®ў - Mutex - Є« ббЁзҐбЄЁ©
ᥬ д®а; ‘®ЎлвЁҐ - ЁбЇ®«м§гҐвбп ¤«п ЇҐаҐ¤ зЁ гЇа ў«пойЁе бЁЈ­ «®ў
¬Ґ¦¤г Їа®жҐбб ¬Ё; MuxWait - б।бвў® ¤«п ®¦Ё¤ ­Ёп ­  ­ҐбЄ®«мЄЁе
ᥬ д®а е ба §г.
„«п ¤®бвгЇ  Є ЄаЁвЁзҐбЄЁ¬ гз бвЄ ¬ ЁбЇ®«м§гҐвбп ᥬ д®а
Mutex.
DosCreateMutexSem() - ᮧ¤ ­ЁҐ ᥬ д®а .
DosOpenMutexSem() - ®вЄалвЁҐ ᥬ д®а .
DosRequestMutexSem() - § Їа®б ¤®бвгЇ  Є ЄаЁвЁзҐбЄ®© ®Ў« бвЁ.
DosReleaseMutexSem() - ®бў®Ў®¦¤Ґ­ЁҐ ᥬ д®а .
DosQueryMutexSem() - Їа®ўҐаЄ  б®бв®п­Ёп ᥬ д®а .
DosCloseMutexSem() - § ЄалвЁҐ ᥬ д®а .

„«п бЁ­еа®­Ё§ жЁЁ б®ЎлвЁ© (§ ЇЁбм, з⥭ЁҐ) ЁбЇ®«м§говбп
ᥬ д®ал б®ЎлвЁ©.
DosCreateEventSem() - ᮧ¤ ­ЁҐ ᥬ д®а  б®ЎлвЁп.
DosOpenEventSem() - ®вЄалвЁҐ ᥬ д®а  б®ЎлвЁп.
DosPostEventSem() - бЁЈ­ «Ё§ жЁп б®ЎлвЁп.
DosWaitEventSem() - ®¦Ё¤ ­ЁҐ б®ЎлвЁп.
DosCloseEventSem() - § ЄалвЁҐ ᥬ д®а  б®ЎлвЁп.

„«п а Ў®вл б ЄаЁвЁзҐбЄЁ¬Ё ᥪжЁп¬Ё бгйҐбвўгов бЇҐжЁ «м­лҐ
дг­ЄжЁЁ.
DosEnterCritSec() - § ЇаҐй Ґв ЇҐаҐЄ«о祭ЁҐ ­ЁвҐ©.
DosExitCritSec() - бЁЈ­ «Ё§ жЁп ® ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®©
ᥪ樨.

я2NOVELL UNIXWARE
UnixWare в Є¦Ґ Ё¬ҐҐв Ї®«­л© ­ Ў®а ᥬ д®а­ле ®ЇҐа жЁ©.
Semget() - ᮧ¤ ­ЁҐ ᥬ д®а .
Semop() - ЁбЇ®«м§гҐвбп Є Є ¤«п V-®ЇҐа жЁЁ, в Є Ё ¤«п
P-®ЇҐа жЁЁ ў § ўЁбЁ¬®бвЁ ®в ЇҐаҐ¤ ў Ґ¬ле Ї а ¬Ґва®ў.
Semctl() - з⥭ЁҐ б®бв®п­Ёп ᥬ д®а .

я2‘Ёб⥬  Њ®¤г« -2
‚ Їа®Ја ¬¬­®© бЁб⥬Ґ Њ®¤г« -2 Ё¬ҐҐвбп вЁЇ ¤ ­­ле SIGNAL,
Є®в®ал© ЇаҐ¤бв ў«пҐв б®Ў®© § ЇЁбм, ᮤҐа¦ йго ЇҐаҐ¬Ґ­­го 楫®Ј®
вЁЇ  Ё гЄ § вҐ«м ­  ®зҐаҐ¤м.
‘ ЇҐаҐ¬Ґ­­®© S вЁЇ  SIGNAL ¬®Јгв ўлЇ®«­пвмбп б«Ґ¤гойЁҐ
®ЇҐа жЁЁ:
WAIT(S) - ¦¤ вм бЁЈ­ « , Є®в®а п  ­ «®ЈЁз­  ђ-®ЇҐа жЁЁ;
SEND(S) - Ї®б« вм бЁЈ­ «, Є®в®а п  ­ «®ЈЁз­  V-®ЇҐа жЁЁ.

Соседние файлы в папке Конспект лекций для групп АСОИУ