2012-03-19 10 views
6

¿Cuál es la diferencia entre InterlockedCompareExchangeRelease() y InterlockedCompareExchangeAcquire()?¿Cuál es la diferencia entre InterlockedCompareExchange Release() y Acquire()?

Cuando trato de aprender las funciones de sincronización con la API de Win32, me parece que hay dos funciones con nombre diferente, pero parece hacer la misma cosa:

LONG __cdecl InterlockedCompareExchangeRelease(
    __inout LONG volatile *Destination, 
    __in  LONG Exchange, 
    __in  LONG Comparand 
); 

y

LONG __cdecl InterlockedCompareExchangeAcquire(
    __inout LONG volatile *Destination, 
    __in  LONG Exchange, 
    __in  LONG Comparand 
); 

puedo comprobar el MSDN, dice que esas funciones son:

Realiza una operación atómica de comparación e intercambio en el especificado valores. La función compara dos valores de 32 bits especificados y intercambios con otro valor de 32 bits según el resultado de la comparación .

pero para InterlockedCompareExchangeAcquire(),

La operación se realiza con la semántica de acceso a la memoria de adquisición.

y para InterlockedCompareExchangeRelease(),

El intercambio se lleva a cabo con la semántica de acceso a memoria liberación.

Tengo curiosidad acerca de la diferencia entre estas dos funciones. Cuándo utilizar el adquirir la semántica de acceso a la memoria o memoria de acceso de liberación semántica? ¿Hay algún ejemplo?

Gracias!

Respuesta

1

He encontrado this y this en MSDN:

la semántica de memoria Adquirir especifican que la operación de la memoria se realiza por el flujo actual serán visibles antes de que se pretende realizar cualquier otra operación de memoria. La semántica de la memoria de liberación especifica que la operación de memoria realizada por el hilo actual será visible después de que se hayan completado todas las demás operaciones de memoria. Esta semántica le permite forzar las operaciones de memoria para que se realicen en un orden específico. Utilice la semántica de adquisición cuando ingrese a una región protegida y libere la semántica al salir de ella.

Cuestiones relacionadas