线程池实现学习

linux线程池分析

https://www.cnblogs.com/zjlbk/p/11359578.html

Linux简单线程池实现(带源码)

https://www.cnblogs.com/jiangzhaowei/p/10383049.html

Linux--线程池与进程池及线程池的简单实现

https://blog.csdn.net/sayhello_world/article/details/72829329

 

线程池的实现主要借助了携程的思想,主要通过工作队列的方式,将task/worker加入pool,线程从线程池结构中获取task/worker执行。

注意事项:

1、线程是可以同时运行在多cpu上的,所以使用pthread_mutex_t lock锁对pool中队列或链表临界资源进行访问

2、同时使用pthread_cond_wait pthread_cond_signal pthread_cond_broadcast进行同步,这里保证了空闲任务时线程wait,只有忙碌时pthread线程处理函数才处于运行状态,并在加载task/worker和销毁线程池时才确保线程处于忙碌状态。

3、线程处理时需要pthread_cleanup_push pthread_cleanup_pop清除对进行保护,万一在此之前有线程异常退出可以有清楚处理函数对 pthread_mutex_t lock锁进行解锁,防止死锁现象的产生

4、线程处理的task/worker不在线程互斥锁 mutex_lock范围内,并且使用pthread_setcancelstate(DISABLE) pthread_setcancelstate(ENABLE) 对 task/worker处理函数进行保护,防止其他线程 cancel导致处理异常。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值