两条线程之间如何通信,使用同一个socket连接协调发送,不出现错误

解决方案 »

  1.   

    是的,因为是客户端,只有一条socket连接,当然只能一条线程发送。
      

  2.   

    用高精度定时器(timeSetEvent)也可以实现吧,设置一下传输速度,评估一下2个数据的比例(频率比例)。比如设置传输速度为60MB/s,频率高的为50MB/s,频率低的10MB/s(假定5:1的比例),每隔1ms触发一次定时器(计算下每ms需要发送多少字节)。定时器触发函数做下判断,5次发频率高(buf1),1次发频率低的(buf2)多线程也是需要线程切换的,设置线程优先级不知道能不能达到你的要求。如果不行,使用高精度定时器可以粗略达到要求
      

  3.   

    子线程还是不要调用socket吧,把你要发的数据放到一个容器里,然后当主线程要发数据的时候检查这个容器是否为空
      

  4.   

    我查了资料,考虑用condition_variable_any条件变量,当定时到了,就执行子线程的发送。
      

  5.   

    我查了资料,考虑用condition_variable_any条件变量,当定时到了,就执行子线程的发送。
    只要你发送数据都集中在一个线程就不会有任何问题,如果定时器超时了,他会自己内部阻塞发送序列的。