Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24045|Ответ: 0

[Консольная программа] волатильное обучение ключевых слов в .NET/C#

[Скопировать ссылку]
Опубликовано 23.05.2018 11:23:40 | | | |
Ссылка на MS:Вход по гиперссылке виден.

Ключевое слово «волатильное» указывает на то, что поле может быть изменено несколькими потоками, выполняющимися одновременно. Поля, объявленные летучими, не ограничены оптимизацией компилятора (при условии, что к ним обращается один поток). Это гарантирует, что поле отображается с последним значением в любое время.

Волатильный модификатор обычно используется для полей, к которым обращаются несколько потоков, но которые не сериализируют доступ с помощью оператора блокировки.

Волатильные ключевые слова можно применять к следующим типам полей:

  • Тип цитирования.
  • Тип указателя (в небезопасном контексте). Обратите внимание, что хотя сам указатель может быть изменяемым, объект, на который он указывает, не может быть изменяемым. Другими словами, «указатель на изменяемый объект» не может быть объявлен.
  • Такие типы, как sbyte, byte, short, ushort, int, uint, char, float и bool.
  • Тип enum с одним из следующих базовых типов: byte, sbyte, short, ushort, int или uint.
  • Общие параметры типа, известные как эталонные типы.
  • IntPtr и UIntPtr.


Переменные ключевые слова можно применять только к полям класса или структуры.Локальные переменные нельзя объявить как волатильные


Хватит чепухи, напишите цикл, чтобы проверить:

Давайте проверим это 10 000 раз по кругу,Обнаружил, что вывод значений A верен, но,Это не объясняетЛетучие — безопасны для нитокПотому что, если проверить это много раз, можно увидеть, что будут ошибки в расчёте! Потому что есть вероятность правильного результата и вероятность неправильного результата



Код:



Давайте ещё раз проверим 100 000 циклов, и мы увидим, что значение a неверно, потому что чем меньше количество циклов, тем меньше вероятность ошибки, и ошибка не так очевидна, как ошибки не было после 10 000 циклов только что.

В этот момент мы добавляем замок для проверки, и становится видно, что значение a вычислено правильно, как мы и ожидали.



Код:



Резюме: волатильность не гарантирует безопасность потока, как видно в приведённом выше примере.




Предыдущий:Скачайте инструмент захвата пакетов smsniff 2.0 китайскую версию
Следующий:Решение VS Remote Debug «Операция отладки занимает больше времени, чем ожидалось»
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com