线程池介绍

一、介绍

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

相关推荐
Better Bench1 小时前
WSL2 Ubuntu 中 Claude CLI “command not found” 故障排查与修复
linux·ubuntu·claude·wsl·claudecode
实心儿儿2 小时前
Linux —— 进程间关系和守护进程
linux·运维·服务器
Dawn-bit3 小时前
Linux磁盘管理详解
linux·运维·服务器·计算机网络·云计算
RisunJan4 小时前
Linux命令-sftp(SSH 文件传输协议客户端)
linux·运维
龙仔7256 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
老杨聊技术6 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos
xiaoye-duck7 小时前
《Linux系统编程》Linux 系统多线程(六):<线程同步与互斥>线程同步(下):POSIX 信号量与环形队列生产者消费者模型详解
linux·线程
三言老师7 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
大鱼>9 小时前
eBPF内核编程:从TC到XDP的全栈可观测性
linux·服务器·php
sxstj9 小时前
老旧电脑 Linux 系统完整推荐(按内存分档,新手友好)
linux