मैं अगर स्थानीय चर आरंभ में विफल रहता है मैं की जरूरत है mainloop
में, एक धागा mainloop
बहुत लंबे समय तक अवरुद्ध किए बिना pthread_create से प्रारंभिक निकास का पता कैसे लगाएं?
यानी
int run_mainloop;
void* mainloop(void* param)
{
// local vars
// initialize local vars
while(run_mainloop)
{
// run mainloop
}
return 0;
}
कहा जाता धागा एक समारोह client_open
कहा जाता है से शुरू हुआ है, यानी
int client_open()
{
run_mainloop = 1;
return pthread_create(&thread, NULL, mainloop, NULL);
}
हालांकि
है जल्दी से बाहर निकलने के तुरंत client_open
को सूचित करने के लिए।
pthread_join
अनुचित है क्योंकि यह अवरुद्ध होगा और मेरे पास client_open
ब्लॉक नहीं हो सकता है। यदि यह लौटने से पहले थोड़े समय का इंतजार करना था तो यह ठीक रहेगा।
मैं इसे pthread_join का उपयोग किए बिना एक अच्छा तरीके से कैसे कर सकता हूं जो ब्लॉक करेगा। मैं रिटर्न कोड प्राप्त करने में सक्षम होना चाहता हूं।
जैसा कि आप लिनक्स का उपयोग कर रहे हैं, आप 'pthread_tryjoin_np' का उपयोग कर सकते हैं - लेकिन 'np' यहां" पोर्टेबल "के लिए खड़ा है! – fge
fge, यह ठीक होगा क्योंकि यह केवल एक लिनक्स कार्यान्वयन है। क्या आप एक उत्तर के रूप में सुझाव देना चाहते हैं और शायद एक विकल्प सुझा सकते हैं? – Matt