SORU
8 Mart 2011, Salı


Nasıl ThreadStatic iş öznitelik mu?

Nasıl [ThreadStatic] çalışma öznitelik mu? Derleyici şeyler için bazı IL TLS değerini almak/yayarlar diye düşünmüştüm, ama bir çözümü bakarak bu düzeyde yapmak gelmiyor.

Bir takip olarak, eğer bir statik olmayan üye koyarsan ne olur? Bir geliştirici bu hatayı yaptık ve derleyici uyarı bile teklif gelmiyor.

Güncelleme

İkinci soru cevabı burada: ThreadStatic Modified with Static C#

CEVAP
8 Mart 2011, Salı


Nasıl [ThreadStatic] özniteliği iş?

Alanı ThreadStatic ile işaretlenmiş bir konuya bağlı olduğunu ve ömrü boyunca bir iplik ömrü ile karşılaştırılabilir.

Kesinliği ThreadStatic benzer (anlambilim) anahtar-değer bir konuya bağlı kalmadan yani:

Thread.Current["MyClass.myVariable"] = 1;
Thread.Current["MyClass.myvariable"]  = 1;

ancak sözdizimi biraz daha kolay

class MyClass {
  [ThreadStatic]
  static int myVariable;
}
// .. then
MyClass.myVariable = 1;
MyClass.myVariable  = 1;

eğer statik olmayan bir üye koyarsan ne olur?

İhmal olduğuna inanıyorum:

    class A {
        [ThreadStatic]
        public int a;
    }
    [Test]
    public void Try() {
        var a1 = new A();
        var a2 = new A();
        a1.a = 5;
        a2.a = 10;
        a1.a.Should().Be.EqualTo(5);
        a2.a.Should().Be.EqualTo(10);
    }

Ayrıca değer ThreadStatic normal static alanlar karşılaştırıldığında herhangi bir senkronizasyon mekanizması devlet paylaşılmaz çünkü) gerektirmeyen bir söz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011