请实际用过WinSock作过工程的高手进来,关于多线程的方案。

Fantasia 2002-06-15 10:09:02
一个Server端程序,需要能够承受重负荷,连接数不是太多,十几个吧,但每个连接都是大流量,并需要对数据进行计算处理,还有访问数据库操作。因为没有经验,对下面三种线程模型难以作出选择:

1、每连接1个线程
2、每连接2个线程(会不会有些浪费?)
3、所有连接共享一个线程池(池中线程数如何定?)

请大虾给个分析或建议,多谢!!!
...全文
28 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fantasia 2002-06-16
  • 打赏
  • 举报
回复
因为希望在98下也能运行,暂时不考虑完成端口。
nuaawyd 2002-06-16
  • 打赏
  • 举报
回复
方案1不错
daehappy 2002-06-16
  • 打赏
  • 举报
回复
up!关注!
seanhut 2002-06-16
  • 打赏
  • 举报
回复
up
danscort2000 2002-06-15
  • 打赏
  • 举报
回复
线程数量先维持在20-30个,取1个系统HANDLE事件,当线程池里的冗余线程快到警戒线时,再开启5个,依次类加,在进程里用1个辅助循环+SLEEP( )来监控。
danscort2000 2002-06-15
  • 打赏
  • 举报
回复
我设计过多线程的SOCKET程序,不过我写的是客户断,服务器断建议用共享线程池,否则有连接近来时会有比较明显的停顿,没有近来就让冗余的线程全部睡觉。
anjy 2002-06-15
  • 打赏
  • 举报
回复
1,简单,也符合你的要求了
leizhengdeng 2002-06-15
  • 打赏
  • 举报
回复
gz
sans 2002-06-15
  • 打赏
  • 举报
回复
这几天正在做这方面的测试,在内存128M的机器上,如果每个连接一个线程的话,当连接数量达到70个左右时,系统会有明显的停顿,在256M的机器上,大约可以达到130个左右的线程,如果连接不是很多,那么就用方案1,编程会相对简单一些,如果连接太多(相对于内存),那么还是使用方案3好,但编程相对复杂一些。
关键还是内存,因为一个线程就用开销1M的堆。
gameboy999 2002-06-15
  • 打赏
  • 举报
回复
居然连这个问题都还高不清楚
我看你用完成端口好了
xuying 2002-06-15
  • 打赏
  • 举报
回复
用3。
看<windows网络编程技术>第8章 i/o模型
和<TCP/IP网络互联技术 卷III>第8章 服务器程序设计算法。

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧