Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 24045|Отговор: 0

[Конзолна програма] волатилно учене на ключови думи в .NET/C#

[Копирай линк]
Публикувано в 23.05.2018 г. 11:23:40 ч. | | | |
Линк към MS:Входът към хиперлинк е видим.

Ключовата дума "волатилна" означава, че едно поле може да бъде модифицирано от няколко нишки, изпълняващи се едновременно. Полетата, обявени за волатилни, не са ограничени от оптимизация на компилатора (при условие, че се достъпват от една нишка). Това гарантира, че полето се рендерира с най-новата стойност по всяко време.

Волатилният модификатор обикновено се използва за полета, достъпни от множество нишки, но не сериализират достъпа чрез заключващо командване.

Волатилните ключови думи могат да се прилагат към следните типове полета:

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


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


Без повече глупости, напиши цикъл, за да го тестваш:

Нека го тестваме 10 000 пъти в цикъл,установих, че изходът на стойностите е верен, но,Не обясняваЛетливият е безопасен за нишкиЗащото, ако го тествате многократно, ще откриете, че ще има грешки в изчисленията! Защото има шанс за правилен резултат и шанс за грешен резултат



Код:



Нека тестваме 100 000 цикъла отново и можем да установим, че стойността на a е неправилна, защото колкото по-малък е броят на циклите, толкова по-малък е рискът от грешка, а грешката не е толкова очевидна, точно както току-що нямаше грешка след 10 000 цикъла.

В този момент добавяме заключване за тест и се вижда, че стойността на a е изчислена правилно, както очаквахме.



Код:



Резюме: волатилността не гарантира безопасност на нишките, както се вижда в горния пример.




Предишен:Изтеглете инструмента за събиране на пакети smsniff 2.0 китайска версия
Следващ:VS Remote Debug решение "Debug операцията отнема повече време от очакваното"
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com