class StopIt
{
private bool stop;
void Loop()
{
while (!stop)
{
// work
}
}
void Stop()
{
stop = true;
}
}
असल में, यदि लूप विधि एक थ्रेड में चल रही है और स्टॉप को दूसरे से बुलाया जाता है तो ऑपरेशन ठीक से बंद हो जाएगा? मैं समझता हूं कि बूल पढ़ने/लिखना परमाणु है। लेकिन, क्या यह पर्याप्त है? अगर थ्रेड लूप तुरंत बंद नहीं होता है तो परेशानी होती है। क्या मुझे अस्थिर रोकना चाहिए?एक परमाणु ऑपरेशन पर्याप्त है
मेरा नियम: यदि आपको पता नहीं है कि वास्तव में क्या अस्थिर साधन है, तो आपको लॉक मुक्त प्रोग्राम लिखने का प्रयास नहीं करना चाहिए। चूंकि आप सवाल पूछ रहे हैं, आप नहीं जानते कि इसका क्या अर्थ है। तो लॉक-फ्री प्रोग्राम लिखने का प्रयास न करें। सुरक्षित रहना। एक ताला का प्रयोग करें। जब दुर्घटनाग्रस्त हो तो ताले महंगे होते हैं; इसे लॉक-फ्री बनाने की कोशिश न करें जब तक आप निश्चित न हों कि (1) आपके पास एक प्रदर्शन समस्या है (2) लॉक समस्या का कारण है और (3) आप समझते हैं कि प्रोसेसर हार्डवेयर स्तर पर अस्थिर अर्थ क्या है। –
स्टॉप का उपयोग होने पर लॉक का उपयोग नहीं करना चाहिए? यदि ऐसा है, तो मैं थोड़ी देर लूप में पढ़ने की पहुंच कैसे लॉक करूं? –
@yummy: जैसा कि यह अब दिखता है, इसे पढ़ने पर लॉक करना मुश्किल है, क्योंकि आप सीधे अपने लूप में फ़ील्ड तक पहुंच सकते हैं। यदि आप संपत्ति (या एक विधि) में पढ़ते हैं, तो आप मूल्य पढ़ने के लिए लॉक का उपयोग कर सकते हैं। –