www.wikidata.uk-ua.nina.az
U Vikipediyi ye statti pro inshi znachennya cogo termina Sinhronizaciya informatika Sinhronizaciya procesiv v informatici privedennya dvoh abo dekilkoh procesiv abo potokiv nitej do takogo yihnogo protikannya koli pevni stadiyi riznih procesiv zdijsnyuyutsya v pevnomu poryadku abo odnochasno dlya uniknennya konkurenciyi potokiv abo vzayemnogo blokuvannya Zagalna ideya polyagaye v tomu sho v pevnih tochkah procesam neobhidno razom domovitisya pro pevnij poryadok dij zi spilnimi resursami Sinhronizaciya neobhidna u vipadkah koli paralelno protikayuchim procesam abo potokam odnogo procesu neobhidna vzayemodiya Zmist 1 Zasobi sinhronizaciyi 2 Sinhronizaciya u Windows 2 1 Sinhronizaciya z odnim ob yektom 2 1 1 Priklad vikoristannya funkciyi WaitForSingleObject 2 2 Sinhronizaciya kilkoh ob yektiv 2 2 1 Priklad ochikuvannya kilkoh ob yektiv 2 3 Ochikuvannya z obrobkoyu povidomlen 3 Primitki 4 Divis takozhZasobi sinhronizaciyi RedaguvatiNajposhirenishi zasobi sinhronizaciyi taki signali i povidomlennya kritichni sekciyi m yuteksi semafori podiyi bar yeri kanali angl pipe Sinhronizaciya u Windows RedaguvatiDlya sinhronizaciyi potokiv u Windows peredbacheno ryad funkcij sinhronizaciyi Sinhronizaciya z odnim ob yektom Redaguvati Najprostishoyu funkciyeyu yaka ochikuye zavershennya perehodu zadanogo ob yekta u signalnij stan ye WaitForSingleObject Yiyi opis movoyu C 1 DWORD WINAPI WaitForSingleObject in HANDLE hHandle in DWORD dwMilliseconds Opis movoyu Delphi 2 function WaitForSingleObject hHandle THandle Deskriptor ob yekta dwMilliseconds DWORD Chas ochikuvannya DWORD Funkciya ochikuye perehodu ob yekta z deskriptorom hHandle u signalnij stan protyagom dwMilliseconds milisekund Yaksho cim parametrom peredati znachennya INFINITE funkciya bude chekati protyagom neobmezhenogo chasu Yaksho dwMilliseconds dorivnyuye 0 to funkciya pereviryaye stan ob yekta j negajno povertaye keruvannya Deskriptor povinen buti vidkritij z pravom dostupu SYNCHRONIZE Funkciya povertaye odne z perelichenih u tablici znachen Znachennya OpisWAIT OBJECT 0 Ob yekt perejshov u signalnij stanWAIT ABANDONED Oznachaye sho zadanij ob yekt ye m yuteksom i potik yakij volodiv nim zavershivsya ne zvilnivshi jogo Vlasnikom m yuteksa staye viklikayuchij potik a sam m yuteks perevoditsya u nesignalnij stanWAIT TIMEOUT Vijshov chas ochikuvannyaWAIT FAILED Vidbulasya pomilka napriklad nevirne znachennya hHandle Priklad vikoristannya funkciyi WaitForSingleObject Redaguvati Tut podano priklad kodu yakij stvoryuye novij proces zapuskayuchi standartnij tekstovij redaktor Bloknot Notepad i chekaye na jogo zavershennya priklad podano movoyu Delphi 2 var PI TProcessInformation SI TStartupInfo begin FillChar SI Sizeof SI 0 SI cb SizeOf SI if not CreateProcess c windows system32 notepad exe nil nil nil false NORMAL PRIORITY CLASS nil nil SI PI then MessageBox Handle Ne vdalosya stvoriti proces MB OK or MB ICONERROR WaitForSingleObject PI hProcess INFINITE Sinhronizaciya kilkoh ob yektiv Redaguvati Dlya sinhronizaciyi kilkoh ob yektiv vikoristovuyut funciyu API WaitForMultipleObjects YiYi opis movoyu C 3 DWORD WINAPI WaitForMultipleObjects in DWORD nCount in const HANDLE lpHandles in BOOL bWaitAll in DWORD dwMilliseconds Opis movoyu Delphi 2 function WaitForMultipleObjects nCount DWORD Kilkist ob yektiv lpHandles PWOHandleArray Adresa masivu ob yektiv bWaitAll BOOL Chi chekati vsi ob yekti dwMilliseconds DWORD Period ochikuvannya DWORD Vkazivnik lpHandles posilayetsya na masiv yakij mistit deskriptori ob yektiv ochikuvannya Parametr nCount zadaye kilkist elementiv cogo masivu Yaksho parametru bWaitAll zadati znachennya true funkciya ochikuvatime na perehid u signalnij stan usih perelichenih u masivi lpHandles ob yektiv Koli cej parametr dorivnyuye false funkciya chekatime na signalnij stan odnogo z nih Parametr dwMilliseconds zadaye chas ochikuvannya yak dlya funkciyi WaitForSingleObject Deskriptori povinni mati pravo dostupu SYNCHRONIZE Funkciya povertaye odne z perelichenih u tablici znachen Znachennya OpisChislo v diapazoni vid WAIT OBJECT 0 do WAIT OBJECT 0 nCount 1 Yaksho bWaitAll dorivnyuye true to ce chislo oznachaye sho vsi ob yekti perejshli u signalnij stan Yaksho false to vidnyavshi vid otrimanogo znachennya WAIT OBJECT 0 otrimayemo indeks elementa masivu lpHandles yakij perejshov u signalnij stanChislo v diapazoni vid WAIT ABANDONED 0 do WAIT ABANDONED 0 nCount 1 Yaksho bWaitAll dorivnyuye true to ce oznachaye sho vsi ob yekti perejshli u signalnij stan ale hocha b odin z potokiv yakij volodiv nimi zavershivsya zalishivshi m yuteks Yaksho false to vidnyavshi vid rezultatu znachennya WAIT ABANDONED 0 otrimayemo indeks elementa masivu lpHandles yakij vidpovidaye zalishenomu m yuteksu Vlasnikom m yuteksa staye viklikayuchij potik a sam m yuteks perevoditsya u nesignalnij stanWAIT TIMEOUT Vijshov chas ochikuvannyaWAIT FAILED Stalasya pomilkaPriklad ochikuvannya kilkoh ob yektiv Redaguvati Ochikuvannya na zavershennya roboti troh potokiv z vidomimi deskriptorami hThreadX mozhna realizuvati tak kod movoyu Delphi 2 var Handles array 0 2 of THandle Handles 0 hThread1 Handles 1 hThread2 Handles 2 hThread3 WaitForMultipleObjects 3 Handles true INFINITE Ochikuvannya z obrobkoyu povidomlen Redaguvati Funkciyi WaitForSingleObject ta WaitForMultipleObjects povnistyu zupinyayut robotu viklikayuchogo potoku vklyuchayuchi j standartnu obrobku povidomlen grafichnoyi pidsistemi Windows tomu programa ne mozhe navit peremalyuvati svoye vikno Tomu funkciyi WaitForSingleObject ta WaitForMultipleObjects varto vikoristovuvati koli chas ochikuvannya nevelikij Yaksho zh zatrimka znachna slid dati mozhlivist programi obroblyati deyaki sistemni povidomlennya Dlya cogo mozhna vikoristati funkciyu MsgWaitForMultipleObjects Yiyi opis movoyu C 4 DWORD WINAPI MsgWaitForMultipleObjects in DWORD nCount in const HANDLE pHandles in BOOL bWaitAll in DWORD dwMilliseconds in DWORD dwWakeMask Opis movoyu Delphi 2 function MsgWaitForMultipleObjects nCount DWORD Kilkist ob yektiv sinhronizaciyi var pHandles Adresa masivu ob yektiv fWaitAll BOOL Chi chekati na vsi ob yekti dwMilliseconds Period ochikuvannya dwWakeMask DWORD Tip podiyi yaka pererivaye ochikuvannya DWORD Osnovna vidminnist ciyeyi funkciyi vid funkciyi WaitForMultipleObjects parametr dwWakeMask yakij ye kombinaciyeyu bitovih praporiv QS XXX i zadaye tipi povidomlen yaki pererivatimut ochikuvannya nezalezhno vid stanu ochikuvanih ob yektiv Napriklad maska QS KEY dozvolyaye perervati ochikuvannya z poyavoyu v cherzi povidomlen vid klaviaturi maska QS MOUSE zabezpechuye reakciyu na povidomlennya mishi a maska QS PAINT povidomlennya peremalovuvannya WM PAINT Z poyavoyu v cherzi viklikayuchogo potoku povidomlen yaki vidpovidayut zadanij masci funkciya povertaye znachennya WAIT OBJECT 0 nCount Otrimavshi take znachennya programa mozhe obrobiti jogo j znovu viklikati funkciyu ochikuvannya Primitki Redaguvati MSDN WaitForSingleObject function a b v g d Konovalenko I V Fedoriv P S Sistemne programuvannya u Windows z prikladami na Delphi T TNTU 2012 MSDN WaitForMultipleObjects function MSDN MsgWaitForMultipleObjects function Divis takozh RedaguvatiBagatonitevist Nit Kritichna sekciya Semafor programuvannya M yuteks F yuteks shvidkij koristuvackij m yuteks Podiya Windows Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016 nbsp Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi nbsp Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Otrimano z https uk wikipedia org w index php title Sinhronizaciya procesiv amp oldid 33987625