茴香豆的茴有多种写法 (之 线程池)

本文详细介绍了线程池在处理异步事件中的应用,讨论了两种操作绑定方式——操作早绑定和操作晚绑定,并分析了各自的适用场景和优缺点。针对模式1的锁竞争问题,提出了改进策略。同时,提到了epoll模型在服务端异步处理中的应用,如muduo库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程池一般用来负责处理异步事件,通常是建立一组线程,当有任务需要执行时,将任务推入线程池进行操作;

不同在于

1)推入队列的可以是处理函数,也可以是单纯的事件数据;如果是处理函数可以是函数指针或者lamda表达式,在线程激活后直接执行函数体;如果时推入的是数据,则可以根据数据类型加载不同的处理单元执行不同的处理;姑且称之为“操作早绑定”和“操作晚绑定”。

2)线程池中共享单个任务队列,也可以每个线程单独拥有一个任务队列,用途不同;

这里描述如下:

一般来说,任务执行时间长,可以采用这样的模式;

这样的模式要求任务执行时间短,或者任务本身有状态;比如epoll适合采用这样的模型,服务端将新的socket添加到不同的线程中,每个线程由一个epoll循环;参考muduo库;

模式1的缺点是锁竞争造成的性能问题,可以适当改进一下,缩小锁的粒度,

 

 未完,待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值