Interligado e volátil

Eu tenho uma variável que estou usando para representar o estado. Ele pode ser lido e gravado em vários segmentos.

estou usandoInterlocked.Exchange eInterlocked.CompareExchange para mudar isso. No entanto eu estou lendo de vários tópicos.

Eu sei dissovolatile pode ser usado para garantir que a variável não seja armazenada em cache localmente, mas sempre seja lida diretamente da memória.

No entanto, se eu definir a variável para volátil, em seguida, ele gera um aviso sobre o uso de volátil e passando usando ref para os métodos intertravados.

Eu quero garantir que cada thread está lendo o valor mais recente da variável e não alguma versão em cache, mas não posso usar volátil.

Existe umInterlocked.Read mas é para tipos de 64 bits e não está disponível na estrutura compacta. A documentação para ele diz que não é necessário para tipos de 32 bits, pois eles já são executados em uma única operação.

Há declarações feitas na Internet que você não precisa de voláteis se estiver usando os métodos Intertravados para todo o seu acesso. No entanto, você não pode ler uma variável de 32 bits usando os métodos Intertravados, portanto, não há como usar métodos Intertravados para todo o seu acesso.

Existe alguma maneira de realizar a leitura e gravação seguras do thread da minha variável sem usar o bloqueio?

questionAnswers(2)

yourAnswerToTheQuestion