Я только что натолкнулся на вопрос - возможен ли безопасный доступ к объекту через потоки в C #.
например. с кодом
//Somewhere long ago
MyClass myVar = new MyClass("First Instance");
//Then later, happening at the same time
//In thread one
myVar = new MyClass("Second Instance");
//In thread two
myVar.PrintName();
Меня не волнует, используется ли первый или второй экземпляр, но возможно ли, что myVar в какой-то момент вообще недопустим (например, указывает на несуществующее местоположение, потому что, возможно, ссылка на объект обновляется только частично раньше использовался в другой теме)
Дополнительный вопрос о замках:
Если я оставляю блокировку - тогда все незавершенные записи записываются в память?
Мой вопрос здесь: если я ссылаюсь на переменную в блокировке, я знаю, что только один поток может получить доступ к блокировке одновременно - но может ли случиться так, что я записываю переменную в одном потоке (а запись выполняется только в кеш), а после этого в другом потоке даже внутри блокировки получаю старое значение переменной (потому что кеш не зафиксирован или у меня еще есть старое значение в кеше этого потока)?