Семафор мен Мутекс арасындағы айырмашылық

Семафор мен Мутекс арасындағы айырмашылық
Семафор мен Мутекс арасындағы айырмашылық

Бейне: Семафор мен Мутекс арасындағы айырмашылық

Бейне: Семафор мен Мутекс арасындағы айырмашылық
Бейне: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Қараша
Anonim

Semaphore және Mutex

Семафор - параллельді бағдарламалау орталарында бірнеше процестер бір уақытта жалпы ресурсқа немесе маңызды бөлімге кірмейтініне көз жеткізу үшін пайдаланылатын деректер құрылымы. Семафорлар өлі құлыптар мен жарыс жағдайларын болдырмау үшін қолданылады. Mutex (өзара алып тастау нысаны) сонымен қатар бір уақытта бірнеше процестер арқылы ортақ ресурсқа кіруді болдырмау үшін қолданылады.

Семафор дегеніміз не?

Semaphore – маңызды бөлімдерге өзара тыйым салуды қамтамасыз ету үшін пайдаланылатын деректер құрылымы. Семафорлар негізінен күту (тарихи түрде P ретінде белгілі) және сигнал (тарихи V ретінде белгілі) деп аталатын екі операцияны қолдайды. Күту операциясы семафор ашық болғанша процесті блоктайды және сигнал операциясы басқа процесті (жіпті) енгізуге мүмкіндік береді. Әрбір семафор күту процестерінің кезегімен байланысты. Күту операциясы ағынмен шақырылғанда, семафор ашық болса, ағын жалғасуы мүмкін. Күту операциясы ағынмен шақырылған кезде семафор жабылса, ағын блокталады және ол кезекте күтуге тура келеді. Сигнал операциясы семафорды ашады және кезекте күтіп тұрған ағын болса, бұл процесті жалғастыруға рұқсат етіледі және кезекте күтіп тұрған ағындар болмаса, сигнал келесі ағындар үшін есте сақталады. Мутекстік семафорлар және санау семафорлары деп аталатын семафорлардың екі түрі бар. Мутекс семафоралары ресурсқа бір рет қатынасуға мүмкіндік береді және семафорларды санау бірнеше ағындарға ресурсқа қатынасуға мүмкіндік береді (бірнеше бірліктері бар).

Мутекс дегеніміз не?

Компьютер қолданбасы іске қосылғанда, ол мутекс жасайды және оны ресурсқа тіркейді. Ресурс ағынмен пайдаланылғанда, ол құлыпталады және басқа ағындар оны пайдалана алмайды. Егер басқа ағын сол ресурсты пайдаланғысы келсе, ол сұрау салуы керек. Содан кейін бірінші ағын ресурспен аяқталғанша бұл ағын кезекке қойылады. Бірінші ағын ресурспен аяқталған кезде, құлып жойылады және кезекте күтіп тұрған ағын ресурсқа қол жеткізе алады. Егер кезекте күтіп тұрған бірнеше ағындар болса, оларға айналмалы негізде рұқсат беріледі. Іс жүзінде, мутекс ресурсқа кіруді бірнеше ағындар арасында ауыстырған кезде, ол бірнеше ағындар бір уақытта ресурсты тұтынатындықтан көрінетін болады. Бірақ белгілі бір уақытта ресурсқа іштей тек бір ағын қатынасады.

Semaphore және Mutex арасындағы айырмашылық неде?

Семафорлар да, мутекс нысандары да параллельді бағдарламалау орталарында өзара алып тастауға қол жеткізу үшін пайдаланылғанымен, олардың кейбір айырмашылықтары бар. Мутекс нысаны тек бір ағынға ресурсты немесе критикалық бөлімді тұтынуға мүмкіндік береді, ал семафорлар ресурсқа бір уақытта қол жеткізудің шектелген санын (рұқсат етілген максималды сан астында) рұқсат етеді. Мутекс нысандарымен ресурсқа қол жеткізгісі келетін басқа ағындар ағымдағы ағын ресурсты пайдалануды аяқтағанша кезекте күтуі керек.

Ұсынылған: