Há atribuição de referência e leitura de operações atômica
Encontrei várias perguntas sobre esse mesmo tópico, mas relacionadas a variáveis gerais (tipos de valor e referência) A resposta aceita deessa questã diz:
Seção 12.6.6 da especificação I da @Partition I declara: "Uma CLI em conformidade deve garantir que o acesso de leitura e gravação a locais de memória alinhados corretamente, não maiores que o tamanho da palavra nativa seja atômico quando todos os acessos de gravação a um local forem iguais. Tamanho."
s variáveis de referência (ou seja, classes) são ponteiros, iguais ao tamanho da palavra nativa, mas tenho algumas dúvidas:
s referências estão garantidas em locais de memória alinhados corretament
Eu não entendo a última parte. O que isto significa? "... quando todos os acessos de gravação em um local tiverem o mesmo tamanho."
m resumo, o obj2 é garantido como válido em todas as iterações do loop no código a segui
class MyClass
{
private OtherClass m_Object;
void Thread1()
{
while(true)
{
OtherClass obj1 = new OtherClass();
m_Object = obj1;
}
}
void Thread2()
{
while (true)
{
OtherClass obj2 = m_Object;
// Is obj2 guaranteed to be valid?
obj2.Check();
}
}
}