需要注意的是,在线程中使用pthread_detach之后就不能用pthread_join了,否则会出现Invalid argument错误
#include <stdio.h>
#include <pthread.h>
#include <string.h>
void *th_run(void *arg)
{
int n = 3;
while(n--)
{
printf("thread run\n");
sleep(1);
}
}
int main()
{
pthread_t pth;
pthread_create(&pth, NULL, th_run, NULL);
pthread_detach(pth);
int status;
int err = pthread_join(pth, (void *)&status);
if (err)
{
printf("error info[%s]\n", strerror(err));
}
else
{
printf("thread exit %d\n", status);
}
return 0;
}
本文探讨了在pthread环境下,当一个线程被detach后尝试对其进行join操作的问题。通过一个简单的示例程序说明了这种情况下会引发Invalid argument错误,并展示了错误处理的方法。
3479





