[थ्रेडस्टैटिक] विशेषता कैसे काम करती है?
आप सोच सकते हैं कि थ्रेडस्टैटिक के साथ चिह्नित क्षेत्र एक धागे से जुड़ा हुआ है और इसका जीवनकाल एक धागे के जीवनकाल के बराबर है।
तो छद्मकोड ThreadStatic
में समान (शब्दार्थ द्वारा) एक थ्रेड से जुड़ा एक कुंजी-मूल्य है:
Thread.Current["MyClass.myVariable"] = 1;
Thread.Current["MyClass.myvariable"] += 1;
लेकिन वाक्य रचना थोड़ा आसान है:
class MyClass {
[ThreadStatic]
static int myVariable;
}
// .. then
MyClass.myVariable = 1;
MyClass.myVariable += 1;
यदि आप इसे गैर-स्थैतिक सदस्य पर रखते हैं तो क्या होगा?
मेरा मानना है कि इसे अनदेखा किया गया है:
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);
}
इसके अतिरिक्त यह उल्लेखनीय है कि ThreadStatic
सामान्य स्थैतिक क्षेत्रों की तुलना में किसी भी तुल्यकालन तंत्र की आवश्यकता नहीं है (क्योंकि राज्य साझा नहीं किया गया है)।