看了msdn,最佳推荐是cpu数和线程数目要相当,这样才避免线程切换带来的额外开!也有些朋友推荐线程数目为cpu数目两倍最佳.
现在,我的问题是我要管理50个socket左右,是单cpu,开的接收线程数目多少比较好.
我自己相法是使用CAsyncSocket,并且OnReceive中接收数据,不另外开数据接收线程.
另外开数据处理线程,处理数据队列.不知数据并发处理效果如何?
现在,我的问题是我要管理50个socket左右,是单cpu,开的接收线程数目多少比较好.
我自己相法是使用CAsyncSocket,并且OnReceive中接收数据,不另外开数据接收线程.
另外开数据处理线程,处理数据队列.不知数据并发处理效果如何?
解决方案 »
- opc读一次数据,内存就会增加4k,郁闷中...
- MDI中的resize问题
- 非模式对话框中的TreeCtrl无法显示节点
- 怎样获取Esc按键的处理?
- 求Socket通讯程序的详细编写步骤Step by Step
- 请问一个程序员考题问题.......
- 根据路径贴图的问题
- 哪位老兄有《windows 2000环境下visual c++编程》(英文:《Mastering Windows 2000 Programming With Visual C++》)的随书光盘例子??
- 参照ms的示例,但终究不明白如何不用mfc去读写excel文件
- 开两个一样的浏览器 用c#语言怎么分别操作第一个和第二个呢
- 如何控制在标题栏上输出的位置?
- 我这有10分,谁给个理由我给他分!
也就是说你如果有多个线程,这几个线程也不可能同时Recv.
所以我想是这样的,在主线程中Recv数据.接收完后数据的处理可以交给work线程.
如果不在主线程接收,你就要频繁切换线程:主线程收到有数据到消息,交给辅线程接收,频繁切换,消耗资源可不小!!!!
你什么都不做,系统中早就有几十上百个线程在了,
如果很费的话,WINDOWS还运行的动啊?
线程切换实际消耗的CPU指令数大概是1600个左右,
相对目前上GHZ的CPU来说,根本微不足道,
想想LINUX/UNIX,人家主要还是采用FORK(CLONE)
如果线程切换已经很费的话,那用FORK企不是自己找死了?
尽管去用好了
你什么都不做,系统中早就有几十上百个线程在了,
如果很费的话,WINDOWS还运行的动啊?
线程切换实际消耗的CPU指令数大概是1600个左右,
相对目前上GHZ的CPU来说,根本微不足道,
想想LINUX/UNIX,人家主要还是采用FORK(CLONE)
如果线程切换已经很费的话,那用FORK企不是自己找死了?
尽管去用好了-------------------------------
说是这样说,但是windows几十上百个线程基本上是处于挂起状态的.