解决方案 »

  1.   

    一个客户端开一个工作线程,这种模式有问题呀
    建议搜下“socket五种IO模型”
      

  2.   

    1.先建立一个全局缓冲区,把视频流数据放入其中,然后创建临界区CRITICAL_SECTION g_cs
    2.在你程序初始化时初始化临界区变量g_cs ,InitializeCriticalSection(&cs) 可以放在InitialDialog()或InitInstance()里
    3.之后在你每个客户端发送线程的send()函数前加EnterCriticalSection(&cs) ;//加锁,发送逻辑完毕后在send()后加 LeaveCriticalSection(&cs);//解锁,这样就可以保证当一个客户端线程在访问全局视频流缓冲时,其他线程均处于等待状态,一旦
    某个线程释放了锁,其他线程就会立刻得到这把锁,然后开始send(),相比之下,这种同步方式其实和SetEvent差不多,只是逻辑会
    比较清晰一些
    4.由于你只是读取数据进行发送,不会修改全局缓冲的值,这样的话不用线程同步也是可以的,所有线程可以同时发送,这样效率会高很多