मैं वर्तमान में एकल-थ्रेडेड एप्लिकेशन में किसी और की लाइब्रेरी से फ़ू फ़ू चला रहा हूं। ज्यादातर समय, मैं फू को फोन करता हूं और यह वास्तव में तेज़ है, कुछ बार, मैं फू को फोन करता हूं और यह हमेशा के लिए लेता है। मैं एक मरीज आदमी नहीं हूं, अगर फू हमेशा के लिए ले जा रहा है, तो मैं फू के निष्पादन को रोकना चाहता हूं और उन तर्कों के साथ इसे कॉल नहीं करना चाहता हूं।क्या मैं बूस्ट सिग्नल 2 और थ्रेड का उपयोग कर सी ++ में सॉफ़्टवेयर वॉचडॉग टाइमर थ्रेड बना सकता हूं?
सबसे अच्छा तरीका है एक नियंत्रित तरीके से फू कॉल करने के लिए क्या है कि मैं सेकंड की एक निश्चित संख्या के बाद निष्पादन रोक सकता है इस तरह के (मेरे वर्तमान वातावरण POSIX/C++ है)। मुझे लगता है कि यहां करने के लिए सही बात यह है कि फू को कॉल करने के लिए दूसरा थ्रेड बनाना है, जबकि मेरे मुख्य धागे में मैं एक टाइमर फ़ंक्शन बनाता हूं जो अंततः दूसरे थ्रेड को सिग्नल करेगा यदि यह समय से बाहर हो जाता है।
वहाँ एक और है, और अधिक उपयुक्त मॉडल (और समाधान) है? यदि नहीं, तो बूस्ट की सिग्नल 2 लाइब्रेरी और थ्रेड्स चाल चलेंगे?
बस स्पष्ट करने के लिए, 'timed_join' * * बंद नहीं होगा' फू() 'धागा को फांसी अगर समय समाप्ति तक पहुँच जाता है, के रूप में मैंने सोचा था कि एरन कहा था के लिये। इसके बजाए, कॉलर केवल यह जान लेगा कि टाइमआउट पहुंचने पर 'Foo() 'थ्रेड अभी भी चल रहा था। – pilcrow