मैं बहु-थ्रेडिंग के लिए सबसे सरल म्यूटेक्स दृष्टिकोण के बारे में पूछना चाहता हूं। क्या निम्न कोड थ्रेड-सुरक्षित (त्वरित-एन-गंदा) है?सरल म्यूटेक्स कभी। क्या यह उदाहरण काम करता है? क्या यह धागा सुरक्षित है?
class myclass
{
bool locked;
vector<double> vals;
myclass();
void add(double val);
};
void myclass::add(double val)
{
if(!locked)
{
this->locked = 1;
this->vals.push_back(val);
this->locked = 0;
}
else
{
this->add(val);
}
}
int main()
{
myclass cls;
//start parallelism
cls.add(static_cast<double>(rand()));
}
क्या यह काम करता है? क्या यह धागा सुरक्षित है? मैं बस यह समझने की कोशिश कर रहा हूं कि सबसे सरल म्यूटेक्स कैसे लिखा जा सकता है।
यदि आपके पास मेरे उदाहरण के बारे में कोई सलाह है, तो अच्छा होगा।
धन्यवाद।
यह कहने के लिए धन्यवाद कि यह काम नहीं करता है। क्या आप कृपया एक फिक्स का सुझाव दे सकते हैं जो संकलक स्वतंत्र है?
सही म्यूटेक्स तंत्र बनाना एक जटिल व्यवसाय है। मैं पहले से ही कुछ इस्तेमाल करूँगा। – andre
आम तौर पर, म्यूटेक्स जैसे सिंक्रनाइज़ेशन प्राइमेटिव्स को कुछ परमाणुता (अक्सर सीपीयू निर्देश स्तर पर) की आवश्यकता होती है। यहां एक दिलचस्प लिंक मिला है: http://lists.canonical.org/pipermail/kragen-tol/1999-August/000457.html – Tom
सबसे सरल म्यूटेक्स (या सामान्य रूप से सिंक्रनाइज़ेशन निर्माण) वह है जिसे आपको आवश्यकता नहीं है; -) – delnan