हाल ही में, मैं इस धारणा के तहत था कि यदि आप इसे फैलाने के बाद धागे को "अलग" करते हैं, तो थ्रेड "मुख्य" थ्रेड समाप्त होने के बाद भी रहता है।pthread_detach प्रश्न
लेकिन थोड़ा सा प्रयोग (नीचे सूचीबद्ध) मेरी धारणा के विपरीत चला जाता है। मुझे उम्मीद है कि पृथक धागा मुख्य समाप्त होने के बाद भी "अलग धागे से बोलना" प्रिंटिंग जारी रखेगा, लेकिन ऐसा प्रतीत नहीं होता है। आवेदन स्पष्ट रूप से समाप्त हो जाता है ...
"अलग" मुद्दों के बाद "अलग" धागे मर जाते हैं वापसी 0?
#include <pthread.h>
#include <stdio.h>
void *func(void *data)
{
while (1)
{
printf("Speaking from the detached thread...\n");
sleep(5);
}
pthread_exit(NULL);
}
int main()
{
pthread_t handle;
if (!pthread_create(&handle, NULL, func, NULL))
{
printf("Thread create successfully !!!\n");
if (! pthread_detach(handle))
printf("Thread detached successfully !!!\n");
}
sleep(5);
printf("Main thread dying...\n");
return 0;
}
अन्य धागे चलने के दौरान मुख्य धागे से बाहर निकलना अच्छा नहीं है; किसी भी मामले में, मुख्य() से लौटने से अन्य थ्रेडों को वैसे भी मार दिया जाएगा। – MarkR