क्या कोई मुझे इस कोड में करने की कोशिश करने वाले चीज़ पर इंगित कर सकता है, क्योंकि SecondLoop
धागा बिल्कुल पहुंच योग्य नहीं है? यह केवल तब तक पहुंच योग्य हो जाता है जब मैं while(true)
पाश हटा देता हूं।धागे में सच होने पर मैं कैसे उपयोग करूं?
#include <iostream>
#include <thread>
using namespace std;
void Loop() {
while(true) {
(do something)
}
}
void SecondLoop() {
while(true) {
(do something)
}
}
int main() {
thread t1(Loop);
t1.join();
thread t2(SecondLoop);
t2.join(); // THIS THREAD IS UNREACHABLE AT ALL!
return false;
}
कारण है कि मैं बहु सूत्रण उपयोग करें, क्योंकि मैं दो छोरों एक ही समय में चल रहा प्राप्त करने की आवश्यकता है।
क्या आप नहीं पहुंचा जा सकता द्वारा मतलब है? 't1.join()' 'मुख्य()' 't1' की नौकरी तक प्रतीक्षा नहीं की जाती है (और जब से आप अनंत लूप का उपयोग करते हैं, तब तक यह कभी नहीं किया जाएगा, जब तक कि आपके पास 'ब्रेक न हो;' कहीं और वहां)। – Zereges
आपका पहला बनाया गया थ्रेड कभी खत्म होने वाले लूप पर चलता है, इसलिए आपको 't1.join() 'में अवरुद्ध कर दिया गया है। या आपके कंकाल में कुछ गुम है ... क्या आप लूप तोड़ते हैं? –
याद रखें कि ['join'] को कॉल करना (http://en.cppreference.com/w/cpp/thread/thread/join) * ब्लॉक * होगा जब तक आप जिस थ्रेड में शामिल हो रहे हैं, वह बाहर निकल गया है। –