send recv 问题

littleeagle007 2007-01-22 05:25:33
请问如果我开多个线程在某个SOCK 上手发数据, 如果某一线程在收或者发送的数据中, 该线程被挂起。 那么会出现什么情况呢? 请高手赐教
...全文
313 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
annhf 2007-04-09
  • 打赏
  • 举报
回复
看你是用什么模式,是阻塞模式,还是非阻塞模式。
littleeagle007 2007-01-23
  • 打赏
  • 举报
回复
这个解释比较合理,我一直在考虑这个问题。因为我现在是多线程在同一个创建好的SOCKET上收发数据,我想采用一个比较好的安全的收发机制但是也不至于乱。
尘雨 2007-01-23
  • 打赏
  • 举报
回复
你主动把线程挂起的话,数据丢不丢失,很难讲,不过丢失的可能性很大,也有可能,很快就把数据送到底层协议的缓冲。
如果你的线程会提交多于一个send,那么数据肯定不全了。而且对端接收端,甚至可能会超时而中断此链接,或者recv一直等待,这却决于数据协议和对端接收采取哪种模型了
尘雨 2007-01-23
  • 打赏
  • 举报
回复
不建议多个线程共享同一个socket去send 或者recv,而线程之间仅仅依靠上下文切换,这样你的包发出的顺序会出现乱序问题,管理起来也较乱。
littleeagle007 2007-01-22
  • 打赏
  • 举报
回复
我的意思说,我如果在我发送数据的过程中把该线程挂起, 那数据会不会丢失?或者出现其他情况??
microyzy 2007-01-22
  • 打赏
  • 举报
回复
没啥情况,系统调度,一会它又能继续执行了,

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧