Respuesta corta: no.
Sin embargo, no estoy al tanto de cualquier situación en la que el enfoque conservador del compilador cambiará el número de lecturas o escrituras si se sigue este enfoque:
Al leer un lugar visible entre subprocesos, guardar su valor a un local antes de hacer cualquier otra manipulación; de forma similar, restringe las escrituras a una sola tarea.
El compilador Delphi no realiza la eliminación de subexpresiones comunes (CSE) en expresiones de ubicación no locales cuando hay llamadas a métodos no alineados entre las expresiones, ya que el compilador no hace optimización interprocedural y por lo tanto no sería correcto incluso para código de subproceso único.
Por lo tanto, es posible que desee utilizar InterlockedExchange() para hacer sus lecturas y escrituras para forzar esto; Además, esto causará una barrera de memoria completa, por lo que el procesador no reordenará las lecturas ni las escrituras.
Absolute introduce un alias, un nombre diferente (y posiblemente un tipo) para la misma ubicación. –
Si puedo preguntar, ¿por qué es necesario? Tal vez hay otra forma de hacer lo que necesita. – Bernard
Un compañero de trabajo era simplemente curioso. Le pregunté lo mismo (por qué). Le dije lo que pensaba, pero sabía cómo averiguarlo. –