Metodo Context::Unblock

Consente di sbloccare il contesto e determinare che diventi eseguibile.

virtual void Unblock() =0;

Note

È perfettamente valido per una chiamata al metodo Unblock precedente rispetto a una chiamata corrispondente al metodo Blocco. Finché le chiamate ai metodi Block e Unblock vengono abbinate correttamente, il runtime gestisce in modo corretto la naturale corsa dell'ordinamento. Una chiamata Unblock che viene prima di una chiamata Block nega semplicemente l'effetto della chiamata Block.

Questo metodo può generare diverse eccezioni. Se un contesto tenta di chiamare il metodo Unblock su se stesso, sarà generata un'eccezione context_self_unblock. Se le chiamate a Block e Unblock non sono correttamente associate (ad esempio: due chiamate a Unblock vengono effettuate per un contesto attualmente in corso di esecuzione), sarà generata l'eccezione context_unblock_unbalanced.

Tenere presente che esiste un periodo critico tra il punto in cui il codice pubblica il contesto affinché un altro thread sia in grado di chiamare il metodo Unblock e il punto in cui viene effettuata la chiamata effettiva al metodo Block. Durante questo periodo, è imperativo non chiamare alcun metodo che possa a sua volta bloccarsi e sbloccarsi per suoi motivi (ad esempio: acquisendo un blocco). Le chiamate al metodo Block e Unblock non localizzano il motivo del blocco e dello sblocco. Solo un oggetto deve disporre della proprietà di una coppia Block e Unblock.

Requisiti

Header: concrt.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Classe Context

Metodo Context::Block

Concetti

Utilità di pianificazione (runtime di concorrenza)