服务器端 socket 多线程池
编写服务器端,采用API socket通讯,接收到的请求就开个线程来处理,但线程的生成都要很多的时间(里面有些数据要生成),现在在把线程做一个线程池管理,让线程运行了就不用再生成,请问如何做这种线程管理与线程,线程池中的线程每次调用Execute,都是从开始执行完,还是停在哪儿下次调用再从这个地方开始执行。
有没有这方面比较完整的例子,谢谢!
[解决办法]
不会用现在的组件?Indy 就已经处理得很好了。
[解决办法]
http://download.csdn.net/source/1436131,http://download.csdn.net/source/1432695,希望对你又用!!
[解决办法]
采用完成端口模型
[解决办法]
实现indy中的线程, 其实你什么也不用管,他已经完成了。
主要以下三个事件:
OnConnect // 当客户端连接时,也即线程创建时
OnDisconnect // 当客户端断开时,也即线程即将释放时
OnExecute // 这时才是你的主要处理过程!
[解决办法]
看了楼主的描述好像关键的问题不是开线程的开销大,而是线程中使用的类初始化的开销大。
如果是这样的话可以给类加个是否空闲的属性。先创建并初始化一堆类实例,然后用个指针数组保存住这些类指针,在适当的时候标记这些类的空闲属性。当有连接进入的时候从数组中抓个处于空闲的实例出来用就可以了。
[解决办法]
使用list保存线程实例,再从list获取到线程实际的 handle.