线程池介绍

一、介绍

1、简介

2、Glib库

3、Glib库线程池工作流程

4、相关数据类型

5、相关函数

(1)g_thread_pool_new

(2)g_thread_pool_push

(3)g_thread_pool_free

二、测试例程

cpp 复制代码
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<glib.h>

void task_func(gpointer data,gpointer user_data)
{
    int task_num = *(int*)data;
    free(data);
    printf("开始执行%d任务\n",task_num);
    sleep(task_num);
    printf("%d任务执行完成\n",task_num);
}

int main(int argc, char const *argv[])
{
    //创建线程池
    GThreadPool * pool = g_thread_pool_new(task_func,NULL,5,TRUE,NULL);
    //向线程池中添加任务
    for (int i = 0; i < 10; i++)
    {
        //每一个提交任务的编号
        int *tmp = malloc(sizeof(int));
        *tmp = i+1;
        g_thread_pool_push(pool,tmp,NULL);
    }

    g_thread_pool_free(pool,FALSE,TRUE);
    printf("所有的任务都完成\n");
    
    return 0;
}

makefile

cpp 复制代码
thread_pool_test:thread_pool_test.c
	-$(CC) -o $@ $^ `pkg-config --cflags --libs glib-2.0`
	-./$@
	-rm ./$@

相关推荐
枳实-叶11 小时前
【Linux驱动开发】第13天:Linux内核设备树解析 OF API 超详细全解
linux·运维·驱动开发
没文化的阿浩11 小时前
【Linux系统】线程的同步与互斥(1)——互斥量mutex
linux·运维·jvm
t5y2211 小时前
【Linux】组管理和权限管理
linux·服务器
j7~12 小时前
【Linux】 基础IO(动静态库的制作与使用)--万字详解
linux·运维·服务器·动态库·静态库
j_xxx404_12 小时前
Linux线程:核心机制与优雅的 C++ 封装实践|附源码
linux·运维·服务器·开发语言·c++·人工智能·ai
IMPYLH12 小时前
Linux 的 users 命令
linux·运维·服务器·前端·数据库·bash
xiaoye-duck12 小时前
【Linux:文件】Linux 动静态库详解:动态链接与动态库加载深度解析
linux
加油201912 小时前
嵌入式软件技术栈和学习路线详解
linux·arm开发·数据结构·mqtt·设计模式·嵌入式
Oj92q85H512 小时前
如何在Dev-C++中使用TDM-GCC编译项目
linux·开发语言·c++