Атомарный размер чтения / записи в 64-битных системах для .NET? - PullRequest
6 голосов
/ 20 октября 2011

В спецификации C # говорится, что чтение и запись являются атомарными для 32-битных типов и меньше (а также для ссылок). Поэтому, если в моем классе есть поле Int32, я знаю, что несколько потоков могут читать и писать в него, и они будут атомарными в работе, поэтому значение всегда будет согласованным (хотя проблемы с кэшированием являются потенциальной проблемой, но это не главное этого вопроса).

Это тоже самое в 64-битных системах? Если я скомпилирую свое приложение для 64-битной системы, значит ли это, что Int64 все еще считается не атомарным? Или теперь я могу считать Int64 атомарным в режиме чтения / записи, поскольку он скомпилирован и работает в 64-битной системе?

1 Ответ

3 голосов
/ 20 октября 2011

Должно быть одинаковым (не атомарным) - значения должны быть правильно выровнены, чтобы позволить 64-битным значениям иметь атомарное чтение / запись, но, насколько я знаю, для CLR не требуется всегда выравнивать Int64 значения, которыеway.

Check Как гарантировать, что 64-битные записи являются атомарными? для обсуждения этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...