C geçici anahtar kelime kullanımını gösteren#
Görsel olarak volatile
anahtar davranış gösteren küçük bir program kodu istiyorum. İdeal olarak, uçucu olmayan statik bir alan için eş zamanlı erişim gerçekleştiren ve bu yüzden yanlış bir davranış olur bir program olmalı.
Aynı programda geçici anahtar kelime ekleme sorunu düzeltmek gerekir.
Bir şey elde etmek için bunu başaramadık. Hatta birkaç kez, optimizasyonunu çalışırken, vb., Hep olmadan doğru bir davranış 'uçucu' anahtar kelime.
Bu konu hakkında herhangi bir fikrin var mı? Basit bir demo uygulaması böyle bir sorun simüle etmek nasıl biliyor musunuz? Donanım bağlı mı?
CEVAP
Çalışan bir örnek elde ettik!
Ana fikir wiki alınan, ama C için bazı değişiklikler ile#. Wiki makalesi C statik alan , olduğu gibi C# daima dikkatle bu statik alanlar için istekleri derleme gösterir... ve olmayan statik bir örnek olun:
Bu örnekte çalıştırırsanızBırakınmod vehata ayıklayıcı olmadan(Ctrl) F5 sonra bir çizgi (test.'foo=! 255)' optimize eder '(true)' ve ben bu programı verir. Ama ekledikten sonra 'geçici' sözcüğünü, her zaman 'TAMAM'.
class Test
{
int foo;
static void Main()
{
var test = new Test();
new Thread(delegate() { Thread.Sleep(500); test.foo = 255; }).Start();
while (test.foo != 255) ;
Console.WriteLine("OK");
}
}
Tam olarak ne zaman Java geçici anahta...
Hiç Java geçici anahtar kelime kullanı...
&Quot;geçici" anahtar kelime için...
&Quot;devam" anahtar kelime nedir...
F karşılığı nedir# C# varsayılan anaht...