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

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • inovationgmbh

    inovationgmb

    28 EYLÜL 2010
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007