多线程的创建退出等待删除语法

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

 

以上是关于多线程的创建退出等待删除语法的主要内容,如果未能解决你的问题,请参考以下文章

shell 异步任务模拟多线程

多线程服务器不等待客户端连接就退出

Linux多线程编程

多线程--线程控制

C++11多线程中的detach()join()joinable()

linux线程的创建、退出、等待、取消、分离