C#多个线程同时调用同一个socket实例的Send方法会发生什么?

Socket指c#自带的相关类使用阻塞式发送。假设2个线程实例t1,t2;t1发送“aaa”,t2发送"bbb"(假设已知物理上t1先发送了它想要发送的第一个字符)下列几... Socket指c#自带的相关类
使用阻塞式发送。
假设2个线程实例t1,t2;t1发送“aaa”,t2发送"bbb"(假设已知物理上t1先发送了它想要发送的第一个字符)
下列几种中的哪一个符合现实?
Send方法实际上隐式加锁。t1发送aaa 且 对方收到aaa,发送aaa时t2阻塞;然后t2发送bbb且对方收到bbb
要发送的信息交错着被发送出去。对方可能收到ababab
t1正常发送,t2调用Send时抛类似于java中IOException的异常。对方只收到aaa

另外,我能不能显式加锁,以实现第一种情况?
展开
 我来答
cnsuyong
推荐于2016-06-05 · TA获得超过1075个赞
知道小有建树答主
回答量:767
采纳率:100%
帮助的人:437万
展开全部
Socket 连接是各自独立的,不可能收到 ababab 。服务端会为来自每个客户端的请求建立独立的通道,互不影响。
更多追问追答
追问
我知道服务器的每个socket实例对应不同的客户端……
我是说,同一个客户端c的两个线程t1、t2都调用c的socket的send方法,则服务器对应于客户端c的socket收到什么?
追答
服务器将为 t1 和 t2 分别创建独立的通道,各自接收。这种情况等价于不同的客户端连接到同一个服务端。举例说明,你在你的浏览器打开两个标签,打开同一个网站,然后在两个标签中点击不同的连接,服务器不会搞错,各是各的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式