Ho appena appreso della classe interbloccata e che dovrebbe essere più veloce del semplice blocco. Ora, questo è tutto bello e buono, ma sono curioso di implementazione.Come funziona Interlocked e perché è più veloce della serratura?
Per quanto ne so, l'unico modo per garantire che un'operazione su una variabile sia eseguita in modo atomico è garantire che solo un thread possa accedere a tale variabile in qualsiasi momento. Che sta bloccando
ho usato riflettore per ottenere la fonte di Interlocked, ma sembra che si utilizza il metodo esterno a fare tutto il suo lavoro:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
internal static extern int ExchangeAdd(ref int location1, int value);
Ho eseguito alcuni test, e prese in effetti è il doppio veloce come semplicemente bloccare l'oggetto e incrementarlo.
Come stanno facendo?
Supporto CPU .... – spender
cosa intendi? –