Многопоточность
От: _NN_ www.nemerleweb.com
Дата: 21.12.20 18:23
Оценка: 7 (1)
Код Socket.cs имеет автомарную запись в Dispose:

            // Make sure we're the first call to Dispose
            if (Interlocked.CompareExchange(ref _disposed, 1, 0) == 1)
            {
                return;
            }


Но само чтение _disposed происходит не автомарно


        private int _disposed; // 0 == false, anything else == true

        internal bool Disposed => _disposed != 0;

        private void ThrowIfDisposed()
        {
            if (Disposed)
            {
                ThrowObjectDisposedException();
            }
        }


Гарантируется ли в C# работоспособность этого кода ?
Не нужен ли где-нибудь volatile, Volatile.Read или Interlocked.Read ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.