Vad är en MUTEX?

Ett ömsesidigt uteslutningsobjekt, eller MUTEX, är ett objekt skapat för användning i datorprogram. Den väsentliga funktionen med MUTEX är att göra det möjligt för en flera programtråd att använda en enda resurs. I allmänhet är funktionaliteten hos objekt för ömsesidig uteslutning att tillåta denna användning av en enda resurs genom att skapa en miljö där åtkomst till resursen kontinuerligt skickas fram och tillbaka mellan de olika aspekterna av programmet.

Processen för att aktivera och skapa en MUTEX sker när datorprogrammet öppnas. I huvudsak kommer programmet att skapa MUTEX och relatera det till en specifik resurs som behövs för att det öppna programmets effektiva funktion ska fungera. När resurserna anropas kommer operativsystemet att tilldela MUTEX ett unikt namn och använda det för att identifiera processen så länge programmet förblir öppet.

När MUTEX har aktiverats och namngivits för sessionen, kan alla andra trådar i programmet som kräver den här resursen ha åtkomst, även om resursen redan används aktivt av en annan tråd. Genom att ange ett behov av resursen kommer MUTEX-funktionen att börja växla åtkomst till resursen fram och tillbaka mellan trådarna. För slutanvändaren är denna process transparent. För alla praktiska syften verkar det som om två användare eller två trådar gör oss till samma resurs samtidigt.

Medan hastigheten för överföringen av åtkomst är så snabb att den inte ens märks för slutanvändaren, bör det noteras att när en resurs används, är den effektivt låst till den ena tråden i sekvensen. En annan tråd som kräver användning av resursen kommer att utfärda en begäran som går in i en kö och förblir där tills den första tråden är klar med den aktiva användningen. Vid den tidpunkten låses resursen upp och MUTEX-funktionen tillåter nästa tråd i köns aktiv åtkomst. Om en tredje tråd är aktiv och behöver resursen kommer MUTEX också att radera denna tråd i kön och ge åtkomst på roterande basis.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?