के आदेश पर निर्भर सी ++ 14 मानक के अनुसार, गैर स्थिर सदस्य चर क्रम में वे एक कक्षा में घोषित किया गया है में initialised कर रहे हैं। नीचे काट कोड नीचे एक थ्रेड फ़ंक्शन को नियंत्रित करने के लिए इस नियम पर निर्भर करता है।initialisation
class foo
{
foo():
keep_going{true},
my_thread(&foo::go,this)
{}
void go()
{
while(keep_going)
check a std::condition_variable and do some work;
}
bool keep_going;
std::thread my_thread;
}
ध्यान दें कि keep_going
धागा वस्तु से पहले घोषित किया जाता है और समय धागा जाने समारोह में प्रवेश करती है द्वारा true
सेट किया जाना चाहिए। यह ठीक है और ठीक काम करता प्रतीत होता है।
हालांकि, इस बहु कोड है और यह तो मैं दो प्रश्न हैं पागल होने के लिए भुगतान करता है:
1 इसे इस तरह initialisation के आदेश पर भरोसा करने के लिए सुरक्षित है? मेरा असली ऑब्जेक्ट प्रोसेसिंग थ्रेड के बिना समझ में नहीं आता है इसलिए मैं इसे कन्स्ट्रक्टर में सेट करना चाहता हूं।
2 यह जब यह initialisation के आदेश की तरह अपेक्षाकृत अस्पष्ट बातों पर निर्भर करता है दूसरों के लिए कोड देने के लिए असुरक्षित है?
प्रारंभिकरण का क्रम अस्पष्ट नहीं है, यह अच्छी तरह परिभाषित है और इस कोड के साथ कुछ भी गलत नहीं है। – Salgar
1) हाँ प्रारंभिकरण का क्रम चश्मा का हिस्सा है, 2) हां - स्पष्ट दस्तावेज – BeyelerStudios
में मदद कर सकता है मैं केवल एक अच्छी टिप्पणी समझाऊंगा। उद्धरण का पालन करें 'हमेशा अपने कोड मैन्टैनर जैसे कोड एक धारावाहिक हत्यारा है जो जानता है कि आप कहां रहते हैं' –