题目:创建一个线程,并理清主线程结束时会发生什么。
代码:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void func()
{
fprintf(stderr, "Thread has been created!
");
return;
}
int main()
{
pthread_t tid;
printf("Create thread1...
");
pthread_create(&tid, NULL, (void*)func, NULL);
printf("main() begin sleep...
");
sleep(5); // 防止父进程退出导致线程结束,而使得其调用函数无法执行
printf("main() end sleep...
");
return 0;
}
题目:创建一个线程,并使用join函数等待线程结束。
完成代码:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
void func()
{
fprintf(stderr, "Thread has been created!
");
pthread_exit(NULL);
return;
}
int main()
{
pthread_t tid;
printf("Create thread1...
");
pthread_create(&tid, NULL, (void*)func, NULL);
pthread_join(tid, NULL);
return 0;
}
题目:使用join函数完成传值功能。
完成代码:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
int retVal;
void func()
{
retVal = 99;
fprintf(stderr, "Thread has been created!
");
pthread_exit(&retVal);
}
int main()
{
pthread_t tid;
printf("Create thread1...
");
pthread_create(&tid, NULL, (void*)func, NULL);
int *pRet;
pthread_join(tid, (void*)&pRet);
printf("retVal is %d
", *pRet);
return 0;
}