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;
}