4.2线程创建等待及退出(第二阶段)
线程 创建 pthread_cread
退出 pthread_exit
等待 pthread_join
代码展示
线程的创建
#include <pthread.h>
#include <stdio.h>
// int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
// void *(*start_routine) (void *), void *arg);
// int pthread_join(pthread_t thread, void **retval);
void *func1(void *arg)
{
printf("t1:%ld thread is create\n",(unsigned long)pthread_self());
printf("t1:param is %d\n",*((int *)arg));
}
int main()
{
int ret;
int param = 100;
pthread_t t1;
ret = pthread_create(&t1,NULL,func1,(void *)¶m);
if(ret == 0){
printf("main:cread t1 success\n");
}
printf("main:%ld\n",(unsigned long)pthread_self());
// while(1);
return 0;
}
线程的退出
#include <pthread.h>
#include <stdio.h>
// int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
// void *(*start_routine) (void *), void *arg);
// int pthread_join(pthread_t thread, void **retval);
void *func1(void *arg)
{
static int ret = 10;
printf("t1:%ld thread is create\n",(unsigned long)pthread_self());
printf("t1:param is %d\n",*((int *)arg));
pthread_exit((void *)&ret);
}
int main()
{
int ret;
int param = 100;
pthread_t t1;
int *pret = NULL;
ret = pthread_create(&t1,NULL,func1,(void *)¶m);
if(ret == 0){
printf("main:cread t1 success\n");
}
printf("main:%ld\n",(unsigned long)pthread_self());
// while(1);
pthread_join(t1,(void **)&pret);
printf("main:t1 quit: %d\n ",*pret);
return 0;
}
线程的等待
#include <pthread.h>
#include <stdio.h>
// int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
// void *(*start_routine) (void *), void *arg);
// int pthread_join(pthread_t thread, void **retval);
void *func1(void *arg)
{
static int ret = 10;
static char *p = "this is run out";
printf("t1:%ld thread is create\n",(unsigned long)pthread_self());
printf("t1:param is %d\n",*((int *)arg));
pthread_exit((void *)p);
}
int main()
{
int ret;
int param = 100;
pthread_t t1;
char *pret = NULL;
ret = pthread_create(&t1,NULL,func1,(void *)¶m);
if(ret == 0){
printf("main:cread t1 success\n");
}
printf("main:%ld\n",(unsigned long)pthread_self());
// while(1);
pthread_join(t1,(void **)&pret);
printf("main:t1 quit: %s\n ",pret);
return 0;
}

本文介绍了如何使用C语言的pthread库来管理线程,包括线程的创建(pthread_create)、线程退出(pthread_exit)以及线程等待(pthread_join)。示例代码详细展示了如何创建线程并传递参数,线程如何退出并返回值,以及主线程如何等待子线程结束并获取其退出状态。
245

被折叠的 条评论
为什么被折叠?



