Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Конспект лекций для групп АСОИУ / L13
.TXT я_я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-®ЇҐа жЁЁ.
‘Ґ¬ д®а, Є®в®ал© Ўл« а бᬮвॠў ЇаҐ¤л¤г饬 а §¤Ґ«Ґ,
§лў Ґвбп ¤ў®Ёзл¬ бҐ¬ д®а®¬.
ЋЎйЁ© ᥬ д®а ў¬Ґбв® д« Ј § пв®бвЁ аҐбгаб ᮤҐа¦Ёв
бзҐвзЁЄ.
‘®¤Ґа¦Ё¬®Ґ бзҐвзЁЄ Ї®§ў®«пҐв ®жҐЁвм б®бв®пЁҐ ᥬ д®а .
Ќ ¤ ᥬ д®а®¬ ўлЇ®«повбп ¤ўҐ ®ЇҐа жЁЁ, Є®в®алҐ §лў овбп 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-®ЇҐа жЁЁ.
Соседние файлы в папке Конспект лекций для групп АСОИУ