请问可不可以实现如1000~5000个线程挂起然后再分组执行,如每组5个线程同时执行程序当5个执行完成再执行下一组线程请问能否实现呀?需要怎么样实现?

解决方案 »

  1.   

    都是处理客户端发来的数据你是说只开5个线程来同时处理吗?其它的就先等着,等5个处理完了再处理,这个也要有个列保存着这些才行吧?我是用UDP的,没有及时处理客户端发来的数据,可能会丢失数据
      

  2.   

    对于上千用户的环境,服务器最好使用线程来进行服务,而楼主所想得到的效果正好与线程池的效果差不多.另外可以考虑使用IOCP(完成端口, I/O Completion Port),只需要开几个线程就可以服务上千个用户.
      

  3.   

    开一个个数据缓冲区,收到数据后仅保存.创建一个线程,循环检查缓冲区,如果有数据就分析数据,根据数据格式,类型交给对就的业务处理模块。处理完成后将结果在保存在一个缓冲区中,让一个发送线程循环发送。
    你现在的每个线程做的都是同样的事,从接收数据到处理然后在到发送,这样的设计就是错误的,不符合OOP的设计思想。如果真的是用户非常多,数据量很大,则要考虑用负载平衡的多服务器方式。
      

  4.   

    to unsigned:
      你说可以使用IOCP来实现,那么是不是就不能使用UDP来处理啦?你那有没有相关的一些例子呀?
    to ZyxIp(绝望中...) :
      你说只要使用一个线程的话,这样用户多了,有些用户等待的时间就比较久了,负载平衡的多服务器方式,这种技术是程序里实现还是在服务器上面使用呀?
      

  5.   

    IOCP并不并没有说不能使用UDP来处理,只是如果UDP需要重组包的话,相对设计上麻烦一点。例子网上有不少,不过我没写Delphi的,我只是用CPP写了一个Echo服务器做测试。目前还没有做其它内容。