यदि कोई थ्रेड ए एक वैरिएबल वी को लिखने के एकमात्र उद्देश्य के साथ एक और थ्रेड बी स्पॉन्स करता है और उसके बाद इसे समाप्त करने की प्रतीक्षा करता है, तो यह सुनिश्चित करने के लिए स्मृति-बाधाएं होती हैं कि थ्रेड ए पर वी के बाद के पढ़ने ताजा हैं? मैं अनिश्चित हूं कि समाप्ति/जुड़ने वाले संचालन में कोई अंतर्निहित बाधाएं हैं जो उन्हें अनावश्यक बनाती हैं।धागे पर शामिल होने पर स्मृति-बाधाओं की आवश्यकता होती है?
public static T ExecuteWithCustomStackSize<T>
(Func<T> func, int stackSize)
{
T result = default(T);
var thread = new Thread(
() =>
{
result = func();
Thread.MemoryBarrier(); // Required?
}
, stackSize);
thread.Start();
thread.Join();
Thread.MemoryBarrier(); // Required?
return result;
}
या तो/दोनों (या अधिक) ऊपर स्निपेट में बाधाओं के लिए आवश्यक हैं कर रहे हैं:
यहाँ एक उदाहरण है?
मुझे संदेह है कि स्मृति बाधा आवश्यक है। अगर वे थ्रेड थे। जॉइन बहुत बेकार होगा और बहुत से लोग परेशानी में होंगे। धागे खत्म होने तक प्रतीक्षा करें, जिसमें वैरिएबल को मान असाइन करना शामिल होगा। – Despertar
इस धागे को देखें: http://stackoverflow.com/questions/6581848/memory-barrier- जनरेटर – Laurijssen