PDA

Visualizza la versione completa : [VB.NET] MUTEX


deedlyt
14-11-2002, 17:52
Salve..

Qualcuno mi sa spiegare meglio con esempio l'argomento MUTEX???

mildred
16-11-2002, 19:13
MUTEX sta per MUTual Exclusion

è un sistema per impedire l'accesso contemporaneo a zone di memoria condivise tra più threads

puo avere due stati: UNLOCKED (cioè che non appartiene a nessun thread), LOCKED (cioè bloccato da un thread)

quando un thread deve modificare una zona di memoria condivisa da altri thread, deve impedire che questi altri thread accedano a questa zona di memoria mentre è utilizzata da "lui" stesso.

per questo motivo ci deve essere un mutex condiviso tra tutti i thread, che viene bloccato da uno soltanto di essi quando deve accedere ai dati della zona di memoria condivisa.

un thread richiede al kernel di bloccare il mutex, se il kernel ritorna OK allora è garantito che il mutex è bloccato e il thread può quindi manipolare i dati e successivamente sbloccare il mutex (il kernel garantisce che uno e soltanto un thread ottenga il LOCK del mutex), l'esecuzione degli altri thread che richiedono il blocco del mutex mentre è già bloccato è sospesa dal kernel stesso

naturalmente tutti i thread devono stare al gioco, ovvero sta al programmatore prevedere che ogni thread blocchi il mutex condiviso prima di manipolare i dati, pena la corruzione dei dati stessi.

PS cmq se vuoi giocare con i mutex, passa almeno al VC++ oppure (ancora meglio) passa a un qualsiasi *nix (leggi linux o freebsd) e NON usare windows.

PS2 la classe VC++ che più si avvicina ai mutex è CCriticalSection

CIAO

Loading