问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

socket套接字在多线程发送数据时要加锁吗

发布网友 发布时间:2022-05-01 00:54

我来回答

1个回答

热心网友 时间:2022-06-21 14:08

从socket本身来说不需要加锁,socket套接字在发送数据的时候,需要申请网口的硬中断,硬中断请求在操作系统底层是加锁的,不会出现冲突。
但是从逻辑上来说,如果多线程操作同一个socket,可能会出现发送数据混乱的情况,因为socket执行发送数据的时候,是把你所要发送的数据填入系统的发送缓冲区,真正发送是网口驱动自己执行的。这个填入过程是线程不安全的。
这个不安全不是指会出现临界区冲突,而是指socket并不能保证每次都把完整的数据压入系统发送缓冲区,比方说你一个线程一次发1000个字节,但是可能压一次只压了800个字节进缓冲区,然后另外一个线程压了一部分数据进去,然后才轮到这个线程再把剩下的200个字节压进去。这样你要发送的数据就被打散混乱了。
所以多线程操作一个socket发送数据,最好是用共享一个发送队列的方式,一般很少用直接加锁的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
江西蓝天学院和赣江职业技术学院哪个好? 江西有什么好的中专学校 什么是单点登录(SSO),以及单点登录的实现流程 前端实现单点登录(SSO) 前端单点登录如何实现 面试官:来说说单点登录的三种实现方式 为什么很多人不买哈弗H9 座机如何开通国内长途 座机如何申请 辽宁省出租车手续怎么办? Socket服务端使用多线程接受客户端发送的包(每个客户端开一个线程),并发时包会错乱,该怎么处理? 刚介入linux c的socket编程没多久,想要写一个socket客户端,实现多线程处理发送和接收,哪位大侠帮帮忙啊 淘宝上。质量问题退货卖家不承担运费怎么投诉 多个线程使用同一个打开的socket发送,数据会不会混淆 有关一个socket多线程通信问题。 淘宝质量问题退货运费商家不承担怎么办 建行年费580多久退还 怎么投诉卖家不承担邮费 Qt 2个线程共用1个Socket 分别收发数据可以吗? 联通卡微信激活要多久? 快递到了成都市分拨中心就不动了怎么办? 寻求成都德邦物流最新招聘信息? 成都大型点的物流园区有那些? 成都蜀邑物流有限责任公司怎么样? 成都哪些货运平台可以注册面包车 成都平方物流有限公司怎么样? 成都佰斯威物流有限公司怎么样? 想知道: 成都市 成都龙泉物流园 在哪 成都有没有德邦物流? 什么是物流行业公共信息平台?当前国内主要有哪些物流公共信息平台? 在淘宝网购物退货商家不承担邮费,怎样在淘宝网上投诉卖家? 淘宝买东西退货卖家不承担运费怎么投诉 淘宝网因质量问题退货垫付的运费,卖家不给怎么投诉 卫生间瓷砖发霉了,如何处理好? 在淘宝买衣服衣服质量问题卖家让我承担运费怎么投诉 我的理想高中1000字作文咋么写? 电脑显示屏成花屏但是却没有破损能修吗 卫生间瓷砖长毛是什么原因?怎么解决? 请问我想学习六年级英语该怎么办 卫生间墙面瓷砖潮湿解决方法有什么 哺乳期能喝体质能量饮料吗 吃完田螺能喝体质能量维生素饮料吗 中沃体质能量饮料敢不敢和纯生啤酒混着喝 体质能量饮料喝多了会发胖吗 急求!!!关于报关企业制度管理的论文 哪位名人称枫桥月夜泊是七绝之首? 请问谁有小金库管理制度? 七绝古诗有哪些? 王昌龄的《出塞》为何被评为唐诗七绝的压卷之作? 唐诗七言绝句