多个线程共用一个SOCKET的问题 当多个线程共享一个SOCKET时用不用使用同步机制加以保护 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的意思是当多个线程共用一个连接好的WINSOCKET发送数据时,要不要自己去做同步,WINSOCKET自己或操作系统能否自己处理同步问题。 socket内部会处理同步的问题, 但是, 如果你自己不加上同步的话,可能数据的到达顺序有问题.例如thread1: send(s, data1, len1, 0);thread2: send(s, data2, len2, 0);由于send函数并不保证发送所有的数据, 它的返回值是已经成功发生的数据长度, 因此, 一般调用发送函数的时候, 都有一个循环. 如果你没有同步,那么, 有可能对方先收到data1前一部分, 然后是data2的部分,然后是data1的后面那部分.等等 上面是对tcp来说, udp就无所谓了, udp要么发送出去, 要么什么都没有发送.而且, 一个socket的发送处理, 被多线程使用, 这个程序处理方法不太好.最好是有一个专门的发送线程来处理发送的数据, 数据被其它的线程放入一个共享buffer中.当然, 这个buffer在读写的时候必须锁定 这个BUFFER怎么处理?那位大虾再来讲讲互斥区! 如何将错误处理写成函数调用(详进) 急于请教一个VC中多文件编译的问题 SHCangeNotiy能否更新DefView? 整体转让彩票软件源码(含知识产权,配套服务网站),开发平台vc6. 内详. 扫描仪控制编程(高分相赠) rc编译hello.rc时总是出错unexpect ends of files found,请大侠指教 如何在头文件中得到系统的系统盘符?可能是C:或D:等等。 关于驱动程序的inf文件格式的几个疑问 wResult<<=8是什么意思? 怎样得到插入符相对于屏幕的坐标?急 为什么不能得到正确结果-关于指针的 怎么样能将。DLL中返回的对话框窗体陷入到主框架里面去呢?
可能数据的到达顺序有问题.
例如thread1: send(s, data1, len1, 0);
thread2: send(s, data2, len2, 0);由于send函数并不保证发送所有的数据, 它的返回值是已经成功发生的数据
长度, 因此, 一般调用发送函数的时候, 都有一个循环. 如果你没有同步,
那么, 有可能对方先收到data1前一部分, 然后是data2的部分,
然后是data1的后面那部分.等等
最好是有一个专门的发送线程来处理发送的数据, 数据被其它的线程放入
一个共享buffer中.当然, 这个buffer在读写的时候必须锁定
那位大虾再来讲讲互斥区!