线程池需要考虑
来源:互联网 发布:unix高级编程视频教程 编辑:程序博客网 时间:2024/05/22 00:33
- 线程池需要考虑:
1. 添加工作任务
2. 查询工作任务是不是完成, wait/done/cannel_if
3. 结束/等/强杀 任务池
- 2指的是 对每一个工作任务的执行
- 如果再增强点就可以hook工作时间
服务器可以用来测试每一个任务的工作统计
用户线程池主要有几个目的,
添加任务,并可以等这个处理的处理结果,
定时的查询这个任务执行怎么样了,
手动清除了一个任务,
停止任务池时是否等所有加入队列的任务执行完
添加任务,并可以等这个处理的处理结果,
定时的查询这个任务执行怎么样了,
手动清除了一个任务,
停止任务池时是否等所有加入队列的任务执行完
#ifndef RPC_THREADPOOL_H#define RPC_THREADPOOL_Htypedef struct rpc_tp rpc_tp_t;typedef struct rpc_tp_worker rpc_tp_worker_t;typedef void (* rpc_tp_complete_cb)(rpc_tp_worker_t * worker, void * opaque);typedef void * (* rpc_tp_process_cb)(void * opaque);typedef enum rpc_tp_state{tp_state_idle = 0,tp_state_busy,tp_state_complete,tp_state_invalid,} rpc_tp_state;typedef enum rpc_tp_kill{tp_kill_immediate,tp_kill_wait} rpc_tp_kill;#ifdef __cplusplusextern "C" {#endifrpc_tp_t * rpc_tp_create(int nthreads);rpc_tp_worker_t * rpc_tp_worker_add(rpc_tp_t * pool, rpc_tp_process_cb process_cb, void * opaque, rpc_tp_complete_cb complete_cb);rpc_tp_state rpc_tp_worker_touch(rpc_tp_worker_t * worker);void * rpc_tp_worker_wait(rpc_tp_worker_t * worker);void rpc_tp_worker_free(rpc_tp_worker_t * worker);void rpc_tp_destroy(rpc_tp_t * pool, rpc_tp_kill type);#ifdef __cplusplus}#endif#endif
#include "rpc_threadpool.h"void * process_cb(void * opaque){int taskid;taskid = (int)opaque;printf("taskid = %d.\n", taskid);Sleep(2000);return NULL;}void complete_cb(rpc_tp_worker_t * worker){rpc_tp_worker_free(worker);}int main(){rpc_tp_t * pool;pool = rpc_tp_create(5);{rpc_tp_process_cb pcb;rpc_tp_complete_cb ccb;void * opaque;int tasks;pcb = process_cb;ccb = complete_cb;for (tasks = 0; tasks < 19; tasks++){rpc_tp_worker_t * worker;rpc_tp_state state;void * result;opaque = (void *)tasks;worker = rpc_tp_worker_add(pool, pcb, opaque, ccb);state = rpc_tp_worker_touch(worker);result = NULL;//result = rpc_tp_worker_wait(worker);}rpc_tp_destroy(pool, tp_kill_wait);printf("destory ok.\n");}}
喜欢技术交流,不喜欢索要免费啤酒的,实现细节可以讨论
- 线程池需要考虑
- 搭建线程池需要考虑的因素
- 需要考虑的语句
- 部署需要考虑
- 为什么需要线程池
- 如果程序需要创建大量的线程,要考虑用 root 用户执行这个程序。
- 如何设计线程安全的类 分布式系统需要考虑的问题
- 多线程操作全局变量的问题(有点复杂,需要考虑线程的优先级问题)
- 创业投资决策需要考虑哪些因素
- 设计到底需要考虑什么
- 换工作需要考虑的
- 会议视听 - 你需要考虑
- 创业需要考虑的问题
- 项目需要需要考虑的有两个方面
- 为什么需要java线程池
- 有关公文管理需要考虑的问题
- 选择磁盘阵列时需要考虑的因素
- 使用Singleton需要考虑内存释放
- Support:Mega Pig Run Bear Forest
- 十年来,爱情有什么变化呢
- 如何才能忘掉前男友呢
- jQuery最新版API视频完全呈现
- 【基础知识】Url参数格式
- 线程池需要考虑
- 进程和线程的区别 #include""和 #include <>区别
- seajs+backbone实例
- CMOS RAM 各字节的含义
- 【程序40】将一个数组逆序输出
- 常用的排序算法的时间复杂度和空间复杂度
- hdu 1431 素数回文
- MySQL排序参数设置
- OJ problem 1004