/* 验证线程的几种退出方式 */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <pthread.h>
void* myfunc(void* arg)
{
printf("child pthread id: %lu\n", pthread_self());
//如果传递参数1,那么就用return方式退出
if((int*)arg == (int*)1)
{
printf("new thread return!\n");
return ((void*)1);
}
//如果传递参数2,那么就用exit()方式退出
if((int*)arg == (int*)2)
{
printf("new thread exit!\n");
exit(2);
}
//如果传递参数3,那么就用pthread_exit()方式退出
if((int*)arg == (int*)3)
{
printf("new thread pthread_exit!\n");
pthread_exit((void *)3);
}
}
int main(int argc, const char* argv[])
{
pthread_t thid;
if(argc < 2)
{
fprintf(stderr, "Usage %s <1 2 3>\n", argv[0]);
return -1;
}
int ret = pthread_create(&thid, NULL, myfunc, (void*)(atoi(argv[1])));
if(ret != 0)
{
printf("error number: %d\n", ret);
// 根据错误号打印错误信息
printf("error information: %s\n", strerror(ret));
}
printf("parent pthread id: %lu\n", pthread_self());
sleep(1);
return 0;
}
Linux中C验证线程的几种退出方式
最新推荐文章于 2023-12-14 13:34:24 发布