1
#include "apue.h"
#include <limits.h>
#include <pthread.h>
void* fun(void *arg)
{
printf("%lu: I'm alive\n", pthread_self());
pthread_exit(0);
}
int main(int argc, char **v)
{
pthread_t tid;
pthread_create(&tid, NULL, fun, NULL);
printf("%lu: I'm dead\n", pthread_self());
return 0;
}
$ ./a.out
3075692224: I'm dead
3075689280: I'm alive
3075689280: I'm alive
$ ./a.out
3076470464: I'm dead
Somtimes,它打印一条线。 我觉得 一行:3076470464: I'm dead
或 两行:
3075692224: I'm dead
3075689280: I'm alive
应rigjt。 因为我不使用pthread_join
,但为什么它可以打印三行;
正确退出你的线程,你的输出应该没问题。目前代码产生未定义的行为。 – this
有时候,解决问题比理解它发生的原因要容易得多。 –