社区
Linux/Unix社区
帖子详情
为什么多线程下recv不阻塞?
broadury
2005-10-03 01:09:31
现在在做一个代理服务器,需要用到多线程。
一个线程一直在接收数据,另一个一直发送。
但是当接收进程将数据接收完毕之后,继续recv,这时候按我想的话,线程应该阻塞在这里,但是结果是一直收到长度为0的数据,并没有阻塞(抓包看出其实并没有数据进来)。
所以导致CPU占用率很高
大家有没有什么好的主意?伤脑筋啊!
...全文
223
3
打赏
收藏
为什么多线程下recv不阻塞?
现在在做一个代理服务器,需要用到多线程。 一个线程一直在接收数据,另一个一直发送。 但是当接收进程将数据接收完毕之后,继续recv,这时候按我想的话,线程应该阻塞在这里,但是结果是一直收到长度为0的数据,并没有阻塞(抓包看出其实并没有数据进来)。 所以导致CPU占用率很高 大家有没有什么好的主意?伤脑筋啊!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
darkstar21cn
2005-10-04
打赏
举报
回复
每次接收为0时,说明没有数据,线程就应该进入休眠。usleep(纳秒)
daemeon
2005-10-03
打赏
举报
回复
非阻塞的方式, recv的返回值应该是-1, errno是EAGAIN.
tb01412
2005-10-03
打赏
举报
回复
那不是多线程的问题,而是你有可能以非阻塞的方式来处理的,你可以试一下单线程来读数据,看是不是也不阻塞?
socket
多线程
例程 非
阻塞
模式
vc++6.0 编写socket
多线程
例程,非
阻塞
模式,客户端 服务器端源代码,可运行
普通的SOCKET
多线程
阻塞
模型
最普通的Socket
多线程
阻塞
通信模型
windows下基于select模式的TCP客户端(Qt
多线程
工程)
windows下基于select网络模式的TCP客户端源码。使用
多线程
处理接收(Qt
多线程
工程),select模型解决了实现多个客户端链接,与多个客户端分别通信 两个模型都存在
recv
(),send()执行
阻塞
问题
vc 线程 自己写的 线程教程例子
简单快速,实现线程的一个例子,很简单,很实用!自己写的,希望对大家有帮助!
Python实现socket非
阻塞
通讯功能示例
本文实例讲述了Python实现socket非
阻塞
通讯功能。分享给大家供大家参考,具体如下: 非
阻塞
需要
多线程
编程 服务端 方式1: 使用threading库实现
多线程
基本方法和单进程基本写法一致, 将收发部分封装为函数以便开启其他线程: import socket import time import threading def handle_socket(conn, addr): while True: data = conn.
recv
(1024) print(data.decode('utf-8')) time.sleep(3) send_data
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章