मैं किसी दिए गए थ्रेड आईडी के लिए pthread_join को कॉल करना चाहता हूं, लेकिन केवल तभी थ्रेड शुरू हो गया है। सुरक्षित समाधान यह देखने के लिए एक चर जोड़ने के लिए हो सकता है कि कौन सा धागा शुरू हुआ या नहीं। हालांकि, मुझे आश्चर्य है कि अगर pthread_t चर जांचना संभव है, तो निम्न कोड की तरह कुछ।क्या कोई अवैध pthread_t आईडी है?
pthread_t thr1 = some_invalid_value; //0 ?
pthread_t thr2 = some_invalid_value;
/* thread 1 and 2 are strated or not depending on various condition */
....
/* cleanup */
if(thr1 != some_invalid_value)
pthread_join(&thr1);
if(thr2 != some_invalid_value)
pthread_join(&thr2);
some_invalid_value कहाँ 0, या एक कार्यान्वयन निर्भर 'PTHREAD_INVALID_ID' मैक्रो
पुनश्च हो सकता है: मेरे धारणा है कि pthread_t प्रकार तुलनीय और आबंटित कर रहे हैं, इस धारणा
पी पी एस के आधार पर: मैं ऐसा करना चाहता था, क्योंकि मैंने सोचा था कि अमान्य थ्रेड आईडी पर pthread_join को कॉल करना अनिश्चित व्यवहार था। यह नहीं। हालांकि, पहले से जुड़े थ्रेड में शामिल होना अनिर्धारित व्यवहार है। अब मान लें कि उपरोक्त "फ़ंक्शन" को बार-बार कहा जाता है। Unconditionnally pthread_join को कॉल करने और परिणाम की जांच करने से परिणामस्वरूप पहले जुड़े थ्रेड पर pthread_join को कॉल किया जा सकता है।
तुम हमेशा pthread_self() ... एक धागा आप शायद में शामिल होने नहीं किया जाएगा ;-) इस्तेमाल कर सकते हैं। पठनीयता की सहायता के लिए 'pthread_t invalid_thread = pthread_self()' का उपयोग कर सकते हैं। –