一、介绍
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 ./$@

