为什么要使用线程池?
问题1:为什么要使用线程池, 有人马上会说,因为创建线程太耗时间了,
可是有人又说了,你创建太多,来回切换,也费时间。
尤其是windows网络编程一本书提到的,不要太多线程,一般般是cpu*2的个数即可。
有几个cpu,一般人的机子就2个而已, 就4个线程,搞那么复杂的线程池,想不通,
为什么要创建?
问题2:
举三个来自网上的例子:
1. 堵塞套接字,不用任何模型的socket编程:
对于长连接而言, 客户端随时都得和服务端保持连接!!! 如果一个客户端1个线程,
几十个客户端就得有几十个线程了, cpu来回切换,貌似几十个线程都在同时运行着。产生假象。
2. iocp+工作线程的方式
我的机子是2cpu, 我就创建4个工作线程把,来进行接收发送数据,用全局map管理在线用户!!
这个也是对付几十个客户端
3. 采用iocp 加上自己的线程池
3者哪一个效率高?
问题3:
还有,既然iocp已经有了线程池了,为什么还有人要写线程池和iocp一块用呢?不多于嘛?
3个问题,我都搜索过了,还真没有什么好的解答。