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

  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • Make:

    Make:

    23 Mart 2006