मेरे पास एक प्रोग्राम है जो दो अलग-अलग संचालन चलाता है और मैं उनके बीच चर साझा करना चाहता हूं।सी ++, प्रक्रियाओं या धागे के बीच डेटा साझा करने के लिए कैसे करें
फिलहाल, मैं कांटा प्रक्रियाओं के बजाय धागे का उपयोग कर रहा हूं लेकिन मुझे चर को साझा करने में समस्याएं आ रही हैं, भले ही मैंने उन्हें अस्थिर घोषित किया हो। अस्थिर रूप में साझा चर की घोषणा के द्वारा
boost::thread collisions_thread2(boost::bind(function_thread2);
, लेकिन ऐसा लगता है कि function_thread2() फ़ंक्शन साझा चर पर परिवर्तन देखने के लिए सक्षम नहीं है:
मैं बढ़ावा कर के साथ की कोशिश की।
thread1:
while(true){
//..do somet stuff
check variable1
}
thread2:
while(true){
do some other stuff
check and write on variable1
}
तुम मुझे बता सकते हैं एक ट्यूटोरियल या आसानी से धागे के बीच चर साझा करने के लिए एक विधि:
मैं क्या करना चाहते हैं क्या कुछ की तरह है? बढ़ावा दे सकता है पुस्तकालय इस मामले में उपयोगी हो सकता है? क्या आपको लगता है कि फोर्क() का उपयोग करना बेहतर है?
मुझे पता है कि मुझे महत्वपूर्ण परिस्थितियों से बचने के लिए म्यूटेक्स का उपयोग करना है, लेकिन मैंने इसका कभी भी उपयोग नहीं किया।
जांच करें कि [इस सवाल] (http://stackoverflow.com/questions/118199/c-thread-shared-data) में मदद करता है। और अंततः [बूस्ट थ्रेड सिंक्रनाइज़ेशन] (http://www.boost.org/doc/libs/1_49_0/doc/html/thread/synchronization.html) – jweyrich
अस्थिरता के पास धागे –
के साथ कुछ लेना देना नहीं है, आपको ' चर साझा करने के लिए अस्थिर '। वैश्विक चर डिफ़ॉल्ट रूप से साझा किए जाते हैं। लेकिन यह एक बुरी चीज है क्योंकि यह डेटा दौड़ को आसान बनाता है। जब आपके पास डेटा दौड़ होती है तो आप अपने प्रोग्राम को उचित रूप से व्यवहार करने की उम्मीद नहीं कर सकते हैं, इसलिए आप शायद इस तरह के कुछ प्रकार में चल रहे हैं। डेटा रेस का निदान करने में सहायता के लिए आपको अपना अधिक वास्तविक कोड पोस्ट करना होगा। – bames53