我正在写一个服务器,需要服务于大量的客户端。我正在考虑什么是最好的线程策略:我读了.NET Framework上的ThreadPool
类,在考虑参数(如运行机器的内核数量)后分配线程,这很好。但是,如果没有线程可用,它将等待一个可用。C#服务器线程分配
我的套接字上的连接可能相当长,即一个线程可能会运行相当长的时间,然后才会完成服务其客户端并终止。因此,如果我为每个套接字启动一个新线程,理论上可能有大量线程处于空闲状态(等待套接字上的数据),但仍然被认为正在运行,从而阻止ThreadPool
分配新的线程和服务其他客户端。另一方面,使用预定义数量的线程为所有套接字提供服务并不能最大限度地利用机器的多个内核。
我假设有一个更好的方法来做到这一点...任何建议?
谢谢。