SpinLockSpinLock

La struttura SpinLock è una primitiva di sincronizzazione di basso livello a esclusione reciproca che ruota in attesa di acquisire un blocco.The SpinLock structure is a low-level, mutual-exclusion synchronization primitive that spins while it waits to acquire a lock. Nei computer multicore, quando si prevedono tempi di attesa brevi e il conflitto è minimo, SpinLock può avere prestazioni migliori rispetto ad altri tipi di blocchi.On multicore computers, when wait times are expected to be short and when contention is minimal, SpinLock can perform better than other kinds of locks. Tuttavia, è consigliabile usare SpinLock solo quando mediante la profilatura si determina che il metodo System.Threading.Monitor o i metodi Interlocked rallentano in modo significativo le prestazioni del programma.However, we recommend that you use SpinLock only when you determine by profiling that the System.Threading.Monitor method or the Interlocked methods are significantly slowing the performance of your program.

SpinLock può produrre l'intervallo di tempo del thread, anche se non ha ancora acquisito il blocco.SpinLock may yield the time slice of the thread even if it has not yet acquired the lock. Ciò avviene per evitare l'inversione di priorità dei thread e per consentire a Garbage Collector di avanzare.It does this to avoid thread-priority inversion, and to enable the garbage collector to make progress. Quando si usa un SpinLock, verificare che nessun thread conservi il blocco per più di un intervallo di tempo molto breve, e che nessun thread possa restare bloccato mentre conserva il blocco.When you use a SpinLock, ensure that no thread can hold the lock for more than a very brief time span, and that no thread can block while it holds the lock.

Poiché SpinLock è un tipo di valore, è necessario passarlo in modo esplicito mediante riferimento se si prevede che le due copie facciano riferimento allo stesso blocco.Because SpinLock is a value type, you must explicitly pass it by reference if you intend the two copies to refer to the same lock.

Per altre informazioni sull'uso di questo tipo, vedere System.Threading.SpinLock.For more information about how to use this type, see System.Threading.SpinLock. Per un esempio, vedere Procedura: Usare SpinLock per la sincronizzazione di basso livello.For an example, see How to: Use SpinLock for Low-Level Synchronization.

SpinLock supporta una modalità di rilevamento-thread da usare durante la fase di sviluppo per rilevare il thread che contiene il blocco in un momento specifico.SpinLock supports a thread-tracking mode that you can use during the development phase to help track the thread that is holding the lock at a specific time. La modalità di rilevamento thread è molto utile per il debug, ma si consiglia di disattivarla nella versione di rilascio del programma in quanto può ridurre le prestazioni.Thread-tracking mode is very useful for debugging, but we recommend that you turn it off in the release version of your program because it may slow performance. Per altre informazioni, vedere Procedura: Abilitare la modalità di rilevamento thread in SpinLock.For more information, see How to: Enable Thread-Tracking Mode in SpinLock.

Vedere ancheSee also