Ағындарды синхронизациялаудағы қосымша әдістері презентация

ІСТЕР Ядроның соңғы объектісі синхронизациялауға қалған – ол істер. Бұл объектіні басқа ағындарды ақпараттандыру үшін қолданады. Яғни, бір істер болған жайлары туралы хабарлау. Істердің ең қосымша мүмкіншілігі, ол сигналдық күйге

Слайд 1ЛЕКЦИЯ №5. АҒЫНДАРДЫ СИНХРОНИЗАЦИЯЛАУДАҒЫ ҚОСЫМША ӘДІСТЕРІ
Құрастырушы: А.Ж.Саринова


Слайд 2ІСТЕР
Ядроның соңғы объектісі синхронизациялауға қалған – ол істер. Бұл объектіні

басқа ағындарды ақпараттандыру үшін қолданады. Яғни, бір істер болған жайлары туралы хабарлау. Істердің ең қосымша мүмкіншілігі, ол сигналдық күйге бір дескриптор келген кезде, бірге күтуден бірнеше ағындарды босату мүмкіндігі еді. Істер автоматты түрде лақтырылатын және қолмен лақтырылатын болып екіге бөлінеді. Бұл істің мүмкіншілігі CreateEvent функциясын шақырғанда орнатылады.
• Қолмен лақтырылатын іс, бұл істі күтіп тұрған ағындардың біреуінеде белгі бермейді.
• Автоматты түрде лақтырылатын іс, бұл істі күтіп тұрған бір ғана ағынға белгі береді және автоматты түрде лақтырылады.


Слайд 3
CreateEvent, OpenEvent, SetEvent, ResetEvent және PulseEvent функциялары істерді қолданады.
HANDLE CreateEvent

( LPSECURITY_ATTRIBUTES lpsa, BOOL fManualReset, BOOL fInitialState, LPCTSTR lpszEventName)
OpenEvent функциясын басқа үрдістерден бар істерді ашу үшін қолданады. Істерді басқаруда үш функця қолданады:
BOOL SetEvent (HANDLE hEvent)
BOOL ResetEvent (HANDLE hEvent;
BOOL PulseEvent (HANDLE hEvent)
Ағын SetEvent функциясы арқылы істі сигналдық күйге ауыстыра алады. Егер іс автоматты түрде лақтырылса, онда жалғыз күтуші ағын босатылады. Ал іс болса автоматты түрде сигналсыз күйге ауысады.


Слайд 4
Егерде іс қолмен лақтырылса, онда ағын берілген іске қатысты ResetEvent функциясын

шақырмайынша, іс сигналдық күйде қалады.
PulseEvent функциясы барлық істерді босатады. WaitForMultipleObjects функциясын барлық істерді күтуде қолданғанда абай болыңыз.
Істерді қолдануда төрт моделі
SetEvent және PulseEvent функцияларымен бірге орнатылатын қолмен және автоматты істерді орнатуда төрт жолы бар.


Слайд 5ЕСКЕРТПЕ:
Істі дұрыс пайдаланбау жарысу күйін тудыруы мүмкін, бұл өз кезегінде қателерді

тудырады. Автоматты түрде лақтыру ісін, мысалға келтіретін болсақ. Пуржинасы бар есіктің механизмі сияқты қарастырсақ, яғни есік ашылғаннан кейін жабылып қалады. Ал қолмен лақтыру ісінде пуржинасы жоқ есік сияқты, ашық күйде қалады. PulseEvent функциясын қарастыратын болсақ, онда есік ашылады және тез қайтадан бір күтіп тұрған ағын өткеннен кейін жабылады. Ал SetEvent функциясында есік ашылады және ашық күйде қалады.

Слайд 7БҰҒАТТАЛҒАН ҚОСЫМША ҚЫЗМЕТТЕР
Ары қарай бірнеше қызметтер көрсетілген. Олар жай операцияны салыстырумен

және айнымалылардың жұбын алмастыруын рұқсат етеді.
Бұғатталған айырбас бір айнымалыны екіншісіне жазады:
LONG InterlockedExchange(LPLONG Target, LONG Value)
Қызмет Target айнымалысына ағымдағы мағынасын қайтарып, оған Value мағынасын қосады. Target айнымалысы сөздермен тегістелуі керек.


Слайд 8
InterlockedExchangeAdd қызметі бірінші мағынаға екіншісін қосады.
LONG InterlockedExchangeAdd (PLONG addend, LONG

Increment)
Increment айнымалысы Addend айнымалысына қосылып, Addend-тің негізгі мағынасын қайтарады.Бұл кызмет айнымалыны екі есе (немесе одан да үлкен) өсірудің атомдық операциясын орындауға рұқсат береді. Ал InterlockedIncrement-пен мұндай операциялар жасауға болмайды.
Соңғы InterlockedCompareExchange кызметі InterlockedExchange қызметіне ұқсас. Айырмашылығы: Теңдік орындалған жағдайда ғана айырбас жасалына алады.
PVOID InterlockedCompareExchange (PVOID *Destination, PVOID Exchange, PVOID Comparand)
Бұл қызмет атомдық операцияларда келесі әрекеттерді орындайды:
Temp = *Destination
If (*Destination= = Coparand) *Destination = Exchange;
Return Temp;


Слайд 9
Осы кызметтің бір айнымалысы ол критикалық кода секциясының бұғатталуын қолданады. *Destination

айнымалысы “бұғаттау айнымалысы” болып табылады. Оған 1 болса “бұғатталған”, ал 0 болса ”бұғаттан алынған” деп есеп теледі. Exchange айнымылысы 0 мәнді болуы тиіс, ал Comparand болса 1 мәнін. Егер де қызмет 1 мағынасын қайтарса, онда шақырылған ағын кызметі өзінің “билігіне” критикалық секциясын алады. Басқалай ол “ұйқтап қалу ” немесе ”циклденіп” бірнеше уақыт керек емес циклді орындап, содан соң қайта көру керек. Бұл циклдену –EnterCriticalSection қызметі тура осы кызметті күту кезінде орындайды.


Слайд 10
Бақылау сұрақтары:
1. Оқығалардың түрлері.
2. Оқығаларды қолданудың төрт үлгісі.
3.

Бұғатталған кызметті тағайымдау.

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика