Это лучший способ реализовать одновременное целое число в С# [дубликат]C#

Место общения программистов C#
Ответить
Anonymous
 Это лучший способ реализовать одновременное целое число в С# [дубликат]

Сообщение Anonymous »

Код: Выделить всё

 internal class Employee
{
internal int concurrentState;

internal void SetConcurrentState(int concurrentStatus)
{
Interlocked.Exchange(ref this.concurrentState, concurrentStatus);
}
internal int GetConcurrentState()
{
return Interlocked.CompareExchange(ref this.concurrentState,
0,
-this.concurrentState);
}
}
Как сказано в заголовке, является ли это лучшим способом реализации параллельного (атомарного) целого числа в C#? Мне нужно только получить значение, чтобы запутанный метод get не выполнял операцию сравнения. Кажется, Microsoft предложила бы лучший способ.
Дополнение: @mjwills опубликовал ссылку на спецификацию C Sharp, и из нее вот это...< /p>

9.6 Атомарность ссылок на переменные Чтение и запись следующих типов данных должны быть атомарными: bool, char, byte, sbyte, short, ushort,
инт, инт, типы с плавающей запятой и ссылочные типы. Кроме того, операции чтения и записи
типов перечислений с базовым типом из предыдущего списка также должны
быть атомарными. Чтение и запись других типов, включая long, ulong,
double и decimal, а также определяемые пользователем типы, не обязательно должны быть
атомарными. Помимо библиотечных функций, предназначенных для этой цели,
нет гарантии атомарного чтения-изменения-записи, например, в случае
инкремента или декремента.

Однако в документе CLI говорится, что атомарные операции гарантируются только при условии правильного выравнивания границ слов в связанном с этим тексте...

Соответствующий интерфейс командной строки должен гарантировать, что чтение и доступ на запись к
встроенным примитивным типам значений и указателям на правильно выровненные ячейки памяти
, не превышающие собственный размер слова (размер типа Native
int), является атомарным (см. §I .12.6.2), когда все доступы на запись к
месту имеют одинаковый размер.


Подробнее здесь: https://stackoverflow.com/questions/792 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»