我现在在做一个在线考试系统,服务器端为每一个客户端开一个线程,用于通讯。考试时间到了后,我在服务器端向各个客户端发命令,然后客户端将试卷用文件的形式发送给服务器端。
我希望一次只收三个人的试卷,收取完后在接受另外三个人的试卷,直到收完。
现在我的问题是:当我发送完收试卷的命令后,就会转到其相应的线程去接受试卷,我怎么判断这三个人的试卷收完了,然后开始收另外的试卷呢。
请各位高手给我点意见!

解决方案 »

  1.   

    客户端  发送线程 不断请求 连接, 一旦连接 就发送所有数据, 放松完毕退出线程
    服务端
            等待 。。 连续 接受 3 个 客户端连接, 用CreateThread 创建3 个线程 , 然后使用 WaitForMultipleObjects 等待 3 个线程 全部 完成 , 进行新一轮的 等待
      

  2.   

    NetDNASupport(爱因斯坦):
    我也考虑过你的这种想法。
    但是我现在做的是为每一个客户端都建立一个线程用来通讯,在考试的整个过程中线程都是活跃的。
      

  3.   

    手绢动作完了回发一个信号不行么?总线程不要用while(true)的方式不停工作,其间waitone一下,这样可以接收到外来的autoresetevent德信号量
      

  4.   

    用一个hashtable保存每个线程的状态就可以了。
    不过你这种同步线程的做法把你的服务器会拖死去,不信你试试60个线程连你服务器,最好用异步通讯,这样你的客户端多一点也不会成正比消耗资源。