Net framework 5, а также среды Visual Studio 2012 и C#


Поддержка полей Volatile в C#



Download 6,27 Mb.
Pdf ko'rish
bet617/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   613   614   615   616   617   618   619   620   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Поддержка полей Volatile в C#
Как гарантировать, что программисты будут корректно вызывать методы 
Volatile.
Read
и 
Volatile.Write
? Сложно продумать все, в частности представить, что 
именно могут делать с общими данными другие потоки в фоновом режиме. Для 
упрощения ситуации в C# было введено ключевое слово 
volatile
, применяемое к 
статическим или экземплярным полям типов 
Boolean
, (
S
)
Byte
, (
U
)
Int16
, (
U
)
Int32

(
U
)
IntPtr

Single
и 
Char
. Также оно применяется к ссылочным типам и любым 
перечислимым полям, если в основе последних лежит тип (
S
)
Byte
, (
U
)
Int16
или 
(
U
)
Int32
. JIT-компилятор гарантирует, что доступ к полям, помеченным данным 
ключевым словом, будет происходить в режиме волатильного чтения или записи, 
поэтому в явном виде вызывать статические методы 
Read
и 
Write
класса 
Volatile 
больше не требуется. Более того, ключевое слово 
volatile
запрещает компилято-
ру C# и JIT-компилятору кэшировать содержимое поля в регистры процессора. 
Это гарантирует, что при всех операциях чтения и записи манипуляции будут 
производиться непосредственно с памятью.
Ключевое слово 
volatile
позволяет переписать класс 
ThreadsSharingData
следующим образом:
internal sealed class ThreadsSharingData {
private volatile Int32 m_flag = 0;
private Int32 m_value = 0;
// Этот метод исполняется одним потоком
public void Thread1() {
// ПРИМЕЧАНИЕ. Значение 5 должно быть записано в m_value 
// перед записью 1 в m_flag
m_value = 5;
m_flag = 1;
}
// Этот метод исполняется другим потоком
public void Thread2() {
// ПРИМЕЧАНИЕ. Поле m_value должно быть прочитано после m_flag
if (m_flag == 1)
Console.WriteLine(m_value);
}
}


832
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   613   614   615   616   617   618   619   620   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish