线程池介绍

一、介绍

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 ./$@

相关推荐
宵时待雨4 分钟前
linux笔记归纳19:网络层协议IP
linux·网络·笔记·网络协议·tcp/ip
做运维的阿瑞1 小时前
Linux下DNS服务器搭建
linux·运维·服务器
团子股股东峥哥1 小时前
day37-RHEL-管理基本存储
linux·运维·服务器
君生我老1 小时前
Linux inode概念 &软硬连接
linux·服务器
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_converter_reset调用流程与实战(二十一)
linux·运维·服务器·gstreamer音视频·音视频进阶
youyou-06062 小时前
AUTOSAR‑COM 常见问题 QA (1)
java·linux·服务器·单片机·汽车
m0_743697592 小时前
grep 的引号、反斜杠与正则方言:一次讲清我踩过的坑
linux
虚无的纽扣2 小时前
【Linux】每个进程都拥有“假内存” | 进程地址空间详解
linux·运维·服务器
拂拉氏3 小时前
【知识讲解】 Linux进程的回收相关接口了解
linux·进程回收
新时代牛马3 小时前
PCI与PCIe 完整篇:硬件拓扑→ 报文协议→配置/BAR → Linux 驱动(一条主线讲透)
linux·运维·网络