Семапхоре вс Мутек
Семапхоре је структура података која се користи да осигура да више процеса не приступа истовремено заједничком ресурсу или критичном одељку, у паралелним програмским окружењима. Семафори се користе да би се избегле мртве браве и услови трке. Мутек (објект узајамне искључености) такође се користи да би се избегло приступ заједничком ресору истовремено помоћу неколико истовремених процеса.
Шта је семафор?
Семафор је структура података која се користи да омогући међусобно искључење критичних одсека. Семафоре углавном подржавају две операције које се зову чекање (историјски познато као П) и сигнал (историјски познато као В). Операција чекања блокира процес док се семафор не отвори и сигнал сигнала дозволи да уђе још један процес (нит). Сваки семафор повезан је с редом чекања. Када се операција чекања зове нит, ако је семафор отворен, нит се може наставити. Ако је семафор затворен када се операција чекања зове нит, нит се блокира и мора да чека у реду чекања. Операција сигнала отвара семафор и ако постоји нит која већ чека у реду, тај процес је дозвољен да се настави, а ако у реду чекања нема нити, сигнал се памти за следеће нити. Постоје две врсте семафора који се називају мутек семафори и бројећи семафори. Мутек семафори омогућавају један приступ ресурсу, а бројање семафора омогућава више нити да приступе ресурсу (који има на располагању неколико јединица).
Шта је Мутек?
Када се покрене рачунарска апликација, креираће мутек и прикључити га на ресурс. Када се извор користи помоћу нити, он се закључава, а други нити не могу да га користе. Ако друга нит жели да користи исти ресурс, мораће да поднесе захтев. Тада ће се та нит поставити у ред док прва нит не буде завршена с ресурсом. Када прва нит заврши са ресурсом, закључавање ће се уклонити и нит која чека у реду може добити приступ ресурсу. Ако у реду чекања чека више нити, добиће им се приступ ротирајуће. Практично, када мутек измењује приступ ресурсу између више нити, биће видљиво како више нити истовремено троши ресурс. Али интерно само један нит приступа извору у датом тренутку.
Која је разлика између Семапхора и Мутека?
Иако се семафори и мутек објекти користе за постизање међусобне искључености у паралелним програмским окружењима, имају неке разлике. Објект мутек омогућује само једној нити да троши ресурс или критични одељак, док семафори допуштају ограничен број истовременог приступа ресурсу (испод максимално дозвољеног броја). Са мутек објектима, остале нити које желе приступити ресору морају чекати у реду док тренутна нит не заврши помоћу ресурса.