glib 线程池 thread_pool
2016-10-28 11:35
471 查看
#include <stdio.h> #include <glib.h> #include <string.h> /** 全局锁*/ GMutex g_lock; #define MAX_THREAD_NUM 10 /** * @brief 线程池回调函数,线程执行的主体函数 */ void show_result(gpointer str, gpointer data) { g_mutex_lock(&g_lock); printf("The result is : %s\n", (char*)str); g_mutex_unlock(&g_lock); if(1) { g_printf("thread[%lu] is running...\n",pthread_self()); sleep(10); } } int main() { char *str = "thread_pool example"; int count = 0; int g_thread_num = 0; GThreadPool *thread_pool; /** * 初始化互斥锁,NULL表示使用默认的快速互斥锁。 */ g_mutex_init(&g_lock); thread_pool = g_thread_pool_new(show_result, NULL, MAX_THREAD_NUM, TRUE, NULL); if (thread_pool == NULL) { printf("g_thread_pool_new failed!\n"); return -1; } /** * 调用20次线程池 * 实际线程池中最多有10个线程同时运行 */ for (count; count < 20; count++) { g_thread_pool_push(thread_pool, (gpointer)str, NULL); } g_thread_num = g_thread_pool_get_max_threads(thread_pool); printf("Max number in the pthread pool: %d\n", g_thread_num); g_thread_pool_free(thread_pool, 0, 1); return; }
相关文章推荐
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- 使用线程池的方法(非TPL)-ThreadPool.QueueUserWorkItem
- 多线程编程(1.线程池ThreadPool)
- python线程池(threadpool)模块使用笔记详解
- 简易线程池Thread Pool
- C# 线程池ThreadPool的用法简析
- ThreadPool 线程池(转)
- threadpool——python线程池
- ThreadPool.QueueUserWorkItem引发的血案,线程池异步非正确姿势导致程序闪退的问题
- 多线程编程(3):线程池ThreadPool
- Spring Thread Pool 线程池的应用
- C#多线程实现方法——线程池(Thread Pool)
- Windows核心编程——》第十一章 线程池(The Windows Thread Pool)
- C#多线程--线程池(ThreadPool)
- (转载)ThreadPool 线程池
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- 浅谈python 线程池threadpool之实现
- Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
- 线程池ThreadPool
- Glib学习(12) 线程池 Thread Pools