Re[2]: Interlocked.CompareExchange против Volatile.Read
От: _NN_ www.nemerleweb.com
Дата: 30.01.21 07:22
Оценка:
Здравствуйте, hi_octane, Вы писали:

_>Подозреваю что проблема в использовании CompareExchange не по назначению. В частности, возможно, играет роль очерёдность разыменования "ref T". Например если будет:


_>
_>поток 1:
_>    value = *ref T;//value == ref T == X
_>поток 2:
_>    Write<T>(ref T, Y)//ref T == Y
_>поток 1:
_>    comparand = *ref T;//comparand == Y
_>        Interlocked.CEX(ref T, =X, =Y) //упс, непреднамеренно заменили результат Write на первое прочитанное значение
_>


Я тоже так считаю, вот коллега по цеху не был со мной согласен.
Есть идея как написать минимальный код приводящий к проблеме, чтобы его убедить ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.