关于线程池

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

偶目前对于线程池的理解

在多线程程序中,如c/s模式中的server端最好用线程池来提高程序性能,

在程序起动时创建一定数量的线程以备使用,

socket侦听到连接后把连接放入一个全局client socket列表中,

使用socket.select把有可读数据的client socket存入一个临时列表中,

循环client socket取出每个连接放入(向线程传参数,还是其它方法?还没研究过)事先建立好的空闲的线程中处理。处理完线程设回空闲等待下一个任务。

这样做的好处是可以使用非阻塞的socket

以前为每个客户端建立一个线程,在维护客户端连接的有效性方面很麻烦,使用了很多线程,但其实线程在很多时候都是处于阻塞等待客户端数据状态,浪费系统资源。

使用非阻塞socket在Receive到0数据时应该可以认为socket连接以断开(未证实)

使用线程池,在需要处理数据时把处理任务交到挂起中的线程中,处理完成后在挂起等待下个任务。这种方式更加能有效的使用系统资源。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航