社区
Linux/Unix社区
帖子详情
为什么多线程下recv不阻塞?
broadury
2005-10-03 01:09:31
现在在做一个代理服务器,需要用到多线程。
一个线程一直在接收数据,另一个一直发送。
但是当接收进程将数据接收完毕之后,继续recv,这时候按我想的话,线程应该阻塞在这里,但是结果是一直收到长度为0的数据,并没有阻塞(抓包看出其实并没有数据进来)。
所以导致CPU占用率很高
大家有没有什么好的主意?伤脑筋啊!
...全文
237
3
打赏
收藏
为什么多线程下recv不阻塞?
现在在做一个代理服务器,需要用到多线程。 一个线程一直在接收数据,另一个一直发送。 但是当接收进程将数据接收完毕之后,继续recv,这时候按我想的话,线程应该阻塞在这里,但是结果是一直收到长度为0的数据,并没有阻塞(抓包看出其实并没有数据进来)。 所以导致CPU占用率很高 大家有没有什么好的主意?伤脑筋啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
darkstar21cn
2005-10-04
打赏
举报
回复
每次接收为0时,说明没有数据,线程就应该进入休眠。usleep(纳秒)
daemeon
2005-10-03
打赏
举报
回复
非阻塞的方式, recv的返回值应该是-1, errno是EAGAIN.
tb01412
2005-10-03
打赏
举报
回复
那不是多线程的问题,而是你有可能以非阻塞的方式来处理的,你可以试一下单线程来读数据,看是不是也不阻塞?
socket
多线程
例程 非
阻塞
模式
这个示例中的源代码包含了客户端和服务器端的实现,通过运行这些代码,你可以实际观察到
多线程
非
阻塞
模式下的socket通信。客户端发送数据到服务器,而服务器接收并回应,整个过程是并行且高效的。 总之,"socket多...
普通的SOCKET
多线程
阻塞
模型
总之,"普通的SOCKET
多线程
阻塞
模型"是一种基础的网络编程模型,它在理解和实践上相对简单,但面对高并发需求时,可能需要优化或转换为更高效的设计模式。在实际项目中,开发者应根据具体需求和系统资源选择合适的...
windows下基于select模式的TCP客户端(Qt
多线程
工程)
windows下基于select网络模式的TCP客户端源码。使用
多线程
处理接收(Qt
多线程
工程),select模型解决了实现多个客户端链接,与多个客户端分别通信 两个模型都存在
recv
(),send()执行
阻塞
问题
Python实现socket非
阻塞
通讯功能示例
非
阻塞
需要
多线程
编程 服务端 方式1: 使用threading库实现
多线程
基本方法和单进程基本写法一致, 将收发部分封装为函数以便开启其他线程: import socket import time import threading def handle_socket(conn, ...
selectors 非
阻塞
通讯
使用socket
阻塞
通讯时,当程序调用
recv
() 方法从socket 中读取数据时,如果没有读取到数据时,当前线程将会被
阻塞
,因此为了解决这个问题采用了
多线程
的方式,制约了服务器高并发的访问。 selectors 模块允许socket...
Linux/Unix社区
23,220
社区成员
74,543
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章