为什么要使用线程池?

liuzu2016 liuzu2016 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

问题1:为什么要使用线程池, 有人马上会说,因为创建线程太耗时间了,

可是有人又说了,你创建太多,来回切换,也费时间。


尤其是windows网络编程一本书提到的,不要太多线程,一般般是cpu*2的个数即可。

有几个cpu,一般人的机子就2个而已, 就4个线程,搞那么复杂的线程池,想不通,

为什么要创建?


问题2:



举三个来自网上的例子:


1. 堵塞套接字,不用任何模型的socket编程:
对于长连接而言, 客户端随时都得和服务端保持连接!!! 如果一个客户端1个线程,

几十个客户端就得有几十个线程了, cpu来回切换,貌似几十个线程都在同时运行着。产生假象。

2. iocp+工作线程的方式
我的机子是2cpu, 我就创建4个工作线程把,来进行接收发送数据,用全局map管理在线用户!!

这个也是对付几十个客户端

3. 采用iocp 加上自己的线程池




3者哪一个效率高?


问题3:

还有,既然iocp已经有了线程池了,为什么还有人要写线程池和iocp一块用呢?不多于嘛?


3个问题,我都搜索过了,还真没有什么好的解答。

...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
liuzu2016
界面 15,976 成员 115,866 内容