हाल ही में मैं एक वेबसाइट में इस कोड को देखा है, और मेरे सवाल यह है:multithreading जब एक एकल बूल चर लॉकिंग?
private bool mbTestFinished = false;
private bool IsFinished()
{
lock(mLock)
{
return mbTestFinished;
}
}
internal void SetFinished()
{
lock(mLock)
{
mbTestFinished = true;
}
}
एक multithread वातावरण में, mbTestFinished
के लिए उपयोग लॉक करने के लिए वास्तव में जरूरी है?
यह सुनिश्चित करने के लिए यह सबसे सिद्ध तंत्र है कि यह एक सीपीयू-कैश किए गए पढ़ने (जो धागे के बीच अच्छी तरह से काम नहीं करेगा) - 'अस्थिर' भी काम करेगा, लेकिन उन कारणों के लिए जो बहुत जटिल हैं (यह नहीं है * 'अस्थिर' का इरादा *, बल्कि: एक दुष्प्रभाव) –
@MarcGravell मैंने हमेशा सोचा है कि _ वास_ 'अस्थिर' का इरादा है; कोई मौका है कि आप एक अच्छा लिंक छोड़ सकते हैं जो बताता है कि क्या है? –
@romkyns: यह [उत्तर] (http://stackoverflow.com/a/4103879/158779) कुछ अंतर्दृष्टि प्रदान करता है। –