Білім беру бағдарламасы Инновациялық технологиялар факультеті «Ақпараттық технологиялар және қауіпсіздік» кафедрасы 2023 Алғысөз


Ағындар синхронизациясының объектілерін оқып үйрену



бет31/107
Дата19.12.2023
өлшемі0.83 Mb.
#487093
түріБілім беру бағдарламасы
1   ...   27   28   29   30   31   32   33   34   ...   107
сессия ответы

Ағындар синхронизациясының объектілерін оқып үйрену

Ағындарды синхрондау нысандары:
Сыни бөлім:
Сыни бөлімнің объектісі Мутекс объектісімен бірдей. Бірақ Mutex нысаны бүкіл процесте объектілерді синхрондауға мүмкіндік береді. Бірақ critical section нысаны әртүрлі процестермен синхрондауға рұқсат бермейді. Маңызды бөлім ағындарды процесс шекарасында синхрондау үшін қолданылады.
Сыни бөлімнің орнына Мутексті қолдануға болады. Бірақ сыни бөлім ағындарын синхрондау нысаны басқа синхрондау нысандарымен салыстырғанда сәл жылдамырақ жұмыс істейді. Сыни бөлім нысаны процесс ішіндегі ағындарды синхрондайды. Сыни бөлім бір уақытта тек бір ағынға қол жеткізуге мүмкіндік береді
Win32 сыни бөлімінің нысаны:
Процесс critical_section құрылымын қолдана отырып, сыни бөлімге жад бөледі. WINNT-те жарияланған маңызды бөлім құрылымы.h, келесідей:
үлгі құрылымы _rtl_critical_section _rtl_critical_section {
PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
// Келесі үш өріс кірісті басқарады
// және ресурс үшін сыни бөлімнен шығу
Құлыптардың ұзақ саны;
Ұзақ Рекурсия ұпайы;
OwningThread өңдеңіз; / / ағын клиентінің идентификаторынан - > UniqueThread
LockSemaphore өңдеңіз;
DWORD SpinCount;
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
Сыни бөлімде біз құрылымның critical_section үшін жадты бөлеміз және сыни бөлімді инициализациялаймыз. Iniailizecriticalsection және initializecriticalsectionandspincount сыни бөлімді инициализациялау үшін қолданылады. Егер біз сыни бөлімді инициализациялайтын болсақ, онда біз кез-келген EnterCriticalsection, tryentercriticalsection немесе LeaveCriticalSection функцияларын қолданамыз. EnterCriticalsectionФункция сыни бөлімге кіру үшін және tryentercriticalsection сыни бөлімге құлыптаусыз кіру үшін қолданылады. Leavecricalsection сыни бөлімнен шығу үшін қолданылады.
Егер синхрондау объектісінің басқа атауларының кез келгені сыни бөлім объектісінің атына сәйкес келсе, сыни бөлім объектісі иесін шексіз күтеді. Сыни бөлім нысаны нысанды жылжытуға немесе көшіруге мүмкіндік бермейді. Егер ағындарды әртүрлі процестерде синхрондау қажет болса, Mutex нысанын пайдаланыңыз. DeleteCriticalSectionфункция маңызды бөлімнің барлық нысандарын босатады. DeleteCriticalSection шақырғаннан кейін EnterCriticalsection немесе LeaveCriticalSection деп атауға болмайды.





  1. Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   ...   107




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет