मैं अपने सी ++ प्रोजेक्ट में थ्रेड का समर्थन करने के लिए boost :: थ्रेड लाइब्रेरी (V1.44) का उपयोग कर रहा हूं।असीमित समय के लिए बूस्ट :: थ्रेड को रोकना
उपयोगकर्ता को टेस्ट लूप के निष्पादन को रोकने में सक्षम होना चाहिए, जो कि की असीमित मात्रा के लिए अपने स्वयं के धागे में चल रहा है और जब भी वह प्रसन्न होता है तो उसे फिर से शुरू करने में सक्षम होना चाहिए।
विंडोज के तहत मैं इस
bool ContintueLoop(){
if(testLoopPaused){ //testLoopPaused can be set by the user via GUI elements
try{
boost::this_thread::interruptible_wait(2147483648); //that's very ugly,
// somebody knows the right way to pause it for a unlimited time?
return true;
}
catch(boost::thread_interrupted& e){ //when the user selects resume the
// the thread is interrupted and continues from here
testLoopPaused = false;
return true;
}
if(...) //test for other flags like endTestLoop etc.
....
}
बिना किसी समस्या के इस काम करता है जैसे कि यह हल है, भले ही यह एक असीमित रुकावट के लिए सही मान पता करने के लिए अच्छा होगा।
मैं अपने कार्यक्रम के एक लिनक्स संस्करण लागू करने के लिए शुरू कर दिया है, लेकिन मैं इस समस्या कि मैं संकलक त्रुटि
error:
interruptible_wait
is not a member ofboost::this_thread
प्रश्न पाने में भाग: क्या एक बढ़ावा रोकने के लिए एक अच्छा तरीका है :: धागा असीमित समय के लिए (जब तक उपयोगकर्ता इसे फिर से शुरू करने का फैसला करता)
आपको बहुत बहुत
क्या कोई टिप्पणी नहीं है जैसे 'Suspend() '? –
@sad_man, नहीं है। एक नींद समारोह है जो निर्धारित समय के लिए थ्रेड को निलंबित कर देगा, लेकिन मुझे नहीं लगता कि निलंबित धागा को यादृच्छिक समय – zitroneneis