社区
网络编程
帖子详情
多个线程共用一个SOCKET的问题
xtaddqqug
2003-06-29 05:46:33
当多个线程共享一个SOCKET时用不用使用同步机制加以保护
...全文
555
9
打赏
收藏
多个线程共用一个SOCKET的问题
当多个线程共享一个SOCKET时用不用使用同步机制加以保护
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ilovevc
2003-07-01
打赏
举报
回复
上面是对tcp来说, udp就无所谓了, udp要么发送出去, 要么什么都没有发送.
而且, 一个socket的发送处理, 被多线程使用, 这个程序处理方法不太好.
最好是有一个专门的发送线程来处理发送的数据, 数据被其它的线程放入
一个共享buffer中.当然, 这个buffer在读写的时候必须锁定
ilovevc
2003-07-01
打赏
举报
回复
socket内部会处理同步的问题, 但是, 如果你自己不加上同步的话,
可能数据的到达顺序有问题.
例如thread1: send(s, data1, len1, 0);
thread2: send(s, data2, len2, 0);
由于send函数并不保证发送所有的数据, 它的返回值是已经成功发生的数据
长度, 因此, 一般调用发送函数的时候, 都有一个循环. 如果你没有同步,
那么, 有可能对方先收到data1前一部分, 然后是data2的部分,
然后是data1的后面那部分.等等
xtaddqqug
2003-07-01
打赏
举报
回复
我的意思是当多个线程共用一个连接好的WINSOCKET发送数据时,要不要自己去做同步,WINSOCKET自己或操作系统能否自己处理同步问题。
florist2000
2003-07-01
打赏
举报
回复
不用同步,如果没有共享的东西而只是公用文件描述符的话。
defector
2003-07-01
打赏
举报
回复
这个BUFFER怎么处理?
那位大虾再来讲讲互斥区!
ISAKEEPER
2003-06-30
打赏
举报
回复
如果你共享的是一个全局变量,可以不要同步化
不然的话,就要了如,临界区、事件等方法了
Healer
2003-06-29
打赏
举报
回复
要, 可以用最简单的临界量了, 但是是不是有必要啊??
不知道这样做是什么目的??
NewFree
2003-06-29
打赏
举报
回复
当然要
johndotcom
2003-06-29
打赏
举报
回复
要
C#多
线程
和
Socket
网络编程精讲
【教学理念】 1、把“需要工作的人”变成“工作需要的人” 2、创设“立足学生、突出项目、强化技术、提高能力”的教学局面。 【课程特色】 1、课程设计循序渐进、讲解细致、通俗易懂、非常适合自主学习 2、教学过程实例丰富、强调技术关键点、并且分析透彻 3、物美价廉:本着知识共享、服务社会宗旨,诣在为更多有需求者提供服务。 此外,提供源代码+答疑+上课讲义,为学生毕业设计、找工作面试等提供指导。
客户端app
多个
线程
对
一个
socket
发送数据
客户端一般是
一个
发送
线程
,
一个
socket
多个
发送
线程
竞争
一个
socket
没什么意义,不会提高发送速度,因为
socket
只有
一个
,只要
socket
在发送
一个
线程
的数据时,该
socket
就被占用了,是不会响应其他
线程
的发送数据请求的。除非客户端维护有
多个
socket
。 服务端使用多
线程
向
多个
客户端同时发送数据是因为服务端维护着
多个
socket
,每个
socket
对应
一个
客户端session连接。 参考: 客户端:多
线程
使用单个
SOCKET
发数 请教:多
线程
使用同
一个
socket
进行数据收发会出现什么
问题
?
socket
多
线程
同时使用同
一个
sockt_fd会出现什么情况?
如果
多个
线程
同时使用同
一个
socket
_fd,可能会出现以下
问题
: 数据混乱:由于
多个
线程
同时向
socket
_fd写入数据,会导致数据混乱。因为不同
线程
的写入顺序和速度不同,有可能
多个
线程
的数据在
socket
中交错出现,导致数据丢失或无法解析。 状态不一致:
多个
线程
同时对同
一个
socket
_fd进行状态修改,可能会导致状态不一致。例如,
一个
线程
关闭了
socket
_fd,但另
一个
线程
仍然在试图向...
多
线程
问题
:为什么不应该使用多
线程
读写同
一个
socket
连接?
为什么不应该使用多
线程
读写
一个
socket
连接
socket
多
线程
编程
socket
多
线程
编程实现并发服务器 一、多
线程
简介 1、什么是
线程
?
线程
在操作系统原理中是这样描述的:
线程
是进程的一条执行路径。
线程
在Unix系统下,通常被称为轻量级的进程,
线程
虽然不是进程,但却可以看作是Unix进程的表亲,所有的
线程
都是在同一进程空间运行,这也意味着多条
线程
将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的
多个
线程
有各自的调用栈(call stack),自己的寄存器环境(register context),自己的
线程
本地存储(thread-l
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章