Semaphore жана Mutex ортосундагы айырма

Semaphore жана Mutex ортосундагы айырма
Semaphore жана Mutex ортосундагы айырма

Video: Semaphore жана Mutex ортосундагы айырма

Video: Semaphore жана Mutex ортосундагы айырма
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Июль
Anonim

Semaphore vs Mutex

Semaphore - параллелдүү программалоо чөйрөлөрүндө бир нече процесстер бир эле учурда жалпы ресурска же критикалык бөлүмгө кирбеши үчүн колдонулган маалымат структурасы. Семафорлор өлүк кулпулардан жана жарыш шарттарынан качуу үчүн колдонулат. Mutex (Өз ара жокко чыгаруу объекти) бир эле учурда бир нече процесстер аркылуу жалпы ресурска кирүүнү болтурбоо үчүн колдонулат.

Семафор деген эмне?

Semaphore - маанилүү бөлүмдөрдүн бири-бирин жокко чыгаруу үчүн колдонулган маалымат структурасы. Семафорлор негизинен күтүү (тарыхый P катары белгилүү) жана сигнал (тарыхый V катары белгилүү) деп аталган эки операцияны колдойт. Күтүү операциясы семафор ачылганга чейин процессти блоктойт жана сигнал операциясы башка процесске (жипке) кирүүгө мүмкүндүк берет. Ар бир семафор күтүү процесстеринин кезеги менен байланышкан. Күтүү операциясы жип аркылуу чакырылганда, семафор ачык болсо, жип улана берет. Күтүү операциясы жип менен чакырылганда семафор жабылып калса, жип бөгөттөлүп, кезекте күтүүгө туура келет. Сигнал операциясы семафорду ачат жана кезекте күтүп турган жип бар болсо, ал процессти улантууга уруксат берилет, ал эми кезекте күтүп турган жиптер жок болсо, сигнал кийинки жиптер үчүн эсте калат. Мутекс семафору жана санагыч семафору деп аталган семафорлордун эки түрү бар. Мутекстүү семафоралар булакка бир эле кирүү мүмкүнчүлүгүн берет жана семафорлорду эсептөө бир нече жиптерге ресурска кирүүгө мүмкүндүк берет (бир нече бирдиктер бар).

Мутекс деген эмне?

Компьютер тиркемеси иштетилгенде, ал мутекс түзүп, аны ресурска тиркейт. Ресурс жип тарабынан колдонулганда, ал кулпуланып, башка жиптер аны колдоно албайт. Эгерде башка жип ошол эле ресурсту колдонууну кааласа, ал сурам бериши керек болот. Андан кийин бул жип биринчи жип ресурс менен аяктаганга чейин кезекке коюлат. Биринчи жип ресурс менен аяктагандан кийин, кулпу алынып салынат жана кезекте күтүп турган жип ресурска кире алат. Кезекте күтүп турган бир нече жиптер бар болсо, аларга айлануу негизинде кирүү мүмкүнчүлүгү берилет. Иш жүзүндө, мутекс ресурска кирүү мүмкүнчүлүгүн бир нече жиптердин ортосунда алмаштырганда, ал бир эле учурда бир нече жип ресурсту керектеп жаткандыктан көрүнүп калат. Бирок белгилүү бир убакта бул ресурска ички бир гана жип кире алат.

Semaphore менен Mutexтин ортосунда кандай айырма бар?

Параллелдүү программалоо чөйрөлөрүндө бири-бирин жокко чыгаруу үчүн семафорлор да, мутекс объекттери да колдонулганына карабастан, алардын айрым айырмачылыктары бар. Мутекс объекти бир жипке ресурсту же критикалык бөлүмдү керектөөгө гана мүмкүндүк берет, ал эми семафорлор ресурска бир эле учурда чектелген кирүү мүмкүнчүлүгүн берет (максималдуу уруксат берилген сандын астында). Мутекс объекттери менен ресурска кирүүнү каалаган башка жиптер учурдагы жип ресурсту колдонуу менен аяктаганга чейин кезекте күтүшү керек.

Сунушталууда: