关于完成端口中的工作者线程 在完成端口中,对于工作者线程的数量该如何确定?还有如果是创建了20个工作者线程,那么这些线程在处理上千的连接I/O时是如何分配的?如果有10个连接有I/O操作,那么是不是之前创建的20个工作者线程中只有10个运行??如果对这些线程的选择是由谁决定的呢? 还有如果我要进行数据库的操作,那么在处理几千个的连接,数据库仅用一个线程是不是也不能满足要求的!那这样几个数据库线程又是合适的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是这样的.socket连接与工作者线程没有直接关系.因为所有的socket上的消息都会发送到单一的完成端口.工作者线程只是从完成端口上不断的取消息并处理,一般根据服务器cpu数量,打开 2*cpu数个工作者线程即可 class Pool {public: _ConnectionPtr GetConnection(); int Remove(_ConnectionPtr conn); int Add(_ConnectionPtr conn); int ReleaseConnection(_ConnectionPtr conn); Pool(int size); virtual ~Pool(); private: list<_Connection*> _pool; Event _connin; CriticalSection _s;}; 这是我一个网络服务器程序中的连接池定义,仅供参考 关于CComboBox显示item问题 判断一个点在一条有向直线的左边还是右边的算法思想 散分,ReadFile疑难问题,高手乱入 一个奇怪的问题,传送的数据都对,就是出现不该有的空行 人生转折、艰难抉择、前辈指点迷津,同行给点建议!!! 如何插入一个工具条 刚刚用向导建好一个程序,添加一个CRecordView类就提示不能实例化抽象类和没有合适的默认构造函数可用 6.0原码和mfc深入浅出不一样!大虾! 请教一个mfc语言转换问题 关于打印任务属性的问题,超级难题,大师请指教 VC问题,请教高手(分数相赠) 关于软件语言的问题
socket连接与工作者线程没有直接关系.因为所有的socket上的消息都会发送到单一的完成端口.工作者线程只是从完成端口上不断的取消息并处理,一般根据服务器cpu数量,打开 2*cpu数个工作者线程即可
class Pool
{
public:
_ConnectionPtr GetConnection();
int Remove(_ConnectionPtr conn);
int Add(_ConnectionPtr conn);
int ReleaseConnection(_ConnectionPtr conn);
Pool(int size);
virtual ~Pool();
private:
list<_Connection*> _pool;
Event _connin;
CriticalSection _s;};
这是我一个网络服务器程序中的连接池定义,仅供参考