成都游戏Coder,记录游戏开发过程的笔记和心得!
可能涉及的技术 Winsock: windows网络通信 完成端口: Windows上服务器的大规模连接机制。 线程池: 高效高利用率的线程机制。
本文主要实现一个线程池的例子,从基本原理入手,一个线程池会记录每个线程的信息,以及每个线程的处理。 一般一个简单线程池至少包含下列组成部分。
1.线程池管理器(ThreadPoolManager):用于创建并管理线程池 2.工作线程(WorkThread): 线程池中线程 3.任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。 4.任务队列:用于存放没有处理的任务。提供一种缓冲机制。
备注:在设计ipc的时候参考 http://man.chinaunix.net/tech/lyceum/linuxK/ipc/ipc.html 线程池设计 http://www.ibm.com/developerworks/cn/java/l-threadPool/
posted on 2009-08-09 18:10 expter 阅读(4172) 评论(8) 编辑 收藏 引用
不用线程,只是select轮询又如何?不见得性能很差。 回复 更多评论
@foxselect的话,如果进程同时占用的socket超过100,效率将显著下降。另外select模型毕竟还是串行操作,无法做到真正的recv/send并行。 回复 更多评论
你一个线程select几十个不就行了? 回复 更多评论
@fox select模型 确实能提高效率,我这里只是介绍一个线程池,他是我在处理IPC机制的一个模型 回复 更多评论
都是epoll的年代了,还select-_-! 回复 更多评论
如果你只需要1~2个socket 连接select 还是很不错的, 比如客户端如果需要handle大量的链接, 如服务器端, 用 IOCP /EPOLL/BOOST。ASIO所以需要case by case, 不能一概而论 回复 更多评论
这代码 应该不是你写的吧.只是把人家的代码拿来该了几个namespace 回复 更多评论
这线程池写的不咋地。能运行吗? 回复 更多评论
Powered by: C++博客 Copyright © expter