Los métodos de esta clase ayudan a proteger de los errores que pueden producirse cuando el programador cambia de contexto mientras un subproceso está actualizando una variable a la que pueden obtener acceso otros subprocesos, o cuando dos subprocesos se están ejecutando simultáneamente en procesadores distintos. Los miembros de esta clase no producen excepciones.
Los métodos Increment y Decrement aumentan o disminuyen una variable y almacenan el valor resultante en una única operación. En la mayoría de los equipos, el incremento de una variable no es una operación atómica y requiere los pasos siguientes:
-
Cargar un valor desde una variable de instancia hasta un registro.
-
Aumentar o reducir el valor.
-
Almacenar el valor en la variable de instancia.
Si no se utiliza Increment ni Decrement, un subproceso se puede adelantar después de que se hayan ejecutado los dos primeros pasos. Así, otro subproceso puede ejecutar los tres pasos. Cuando se reanuda la ejecución del primer subproceso, sobrescribe el valor de la variable de instancia y se pierde el efecto del aumento o reducción que realiza el segundo subproceso.
El método Exchange intercambia los valores de las variables especificadas atómicamente. El método CompareExchange combina dos operaciones: compara dos valores y almacena un tercer valor en una de las variables, en función del resultado de la comparación. Las operaciones de comparación e intercambio se realizan como una operación atómica.