多线程的创建退出等待删除语法
Posted 我有一壶酒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程的创建退出等待删除语法相关的知识,希望对你有一定的参考价值。
1、多线程创建pthread_create()的语法
2、多线程退出pthread_exit()的语法
3、多线程等待pthread_join()的语法
4、多线程删除pthread_cancel()的语法
代码分析:
/* thread.c */ #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define THREAD_NUMBER 3 /*线程数*/ #define REPEAT_NUMBER 5 /*每个线程中的小任务数*/ #define DELAY_TIME_LEVELS 10.0 /*小任务之间的最大时间间隔*/ void *thrd_func(void *arg) { /* 线程函数例程 */ int thrd_num = (int)arg; int delay_time = 0; int count = 0; printf("Thread %d is starting\\n", thrd_num); for (count = 0; count < REPEAT_NUMBER; count++) { delay_time = (int)(rand() * DELAY_TIME_LEVELS/(RAND_MAX)) + 1; sleep(delay_time); printf("\\tThread %d: job %d delay = %d\\n", thrd_num, count, delay_time); } printf("Thread %d finished\\n", thrd_num); pthread_exit(NULL); } int main(void) { pthread_t thread[THREAD_NUMBER]; int no = 0, res; void * thrd_ret; srand(time(NULL)); for (no = 0; no < THREAD_NUMBER; no++) { /* 创建多线程 */ res = pthread_create(&thread[no], NULL, thrd_func, (void*)no); if (res != 0) { printf("Create thread %d failed\\n", no); exit(res); } } printf("Create treads success\\n Waiting for threads to finish...\\n"); for (no = 0; no < THREAD_NUMBER; no++) { /* 等待线程结束 */ res = pthread_join(thread[no], &thrd_ret); if (!res) { printf("Thread %d joined\\n", no); } else { printf("Thread %d join failed\\n", no); } } return 0; }
以上是关于多线程的创建退出等待删除语法的主要内容,如果未能解决你的问题,请参考以下文章