Questo post è un seguito al mio precedente post sul blocking e spinning e vuole essere un piccolo approfondimento sulle nuove struct SpinLock e SpinWait
di NET 4.
Come ho scritto nel post, in caso di attese molto brevi lo spinning può essere preferibile al blocking in quanto evita overhead di context switch.
Gli oggetti SpinLock
e SpinWait
sono state pensate esattamente per questo caso.
E’ importante sottolineare che tali oggetti non sono classi ma sono struct
. Questa scelta è stata presa per fare in modo che siano sullo Stack senza mai passare per lo Heap e conseguentemente eliminare il costo di allocazione e garbage collection.