socket 阻塞read时,做close无返回 问题
时间:2010-08-24
来源:互联网
服务端和客户都都为 阻塞socket.
服务端一个线程 阻塞read, 另一个线程阻塞write.
客户端阻塞read.
当服务端主线程阻塞read时, 另一个线程write完成后 做close后,
奇怪的是 服务端和客户端阻塞的 read 都没有返回,一直阻塞,
按我理解, 至少客户端 read应该会返回。 ???
希望各位大虾解疑, 谢谢!
服务端一个线程 阻塞read, 另一个线程阻塞write.
客户端阻塞read.
当服务端主线程阻塞read时, 另一个线程write完成后 做close后,
奇怪的是 服务端和客户端阻塞的 read 都没有返回,一直阻塞,
按我理解, 至少客户端 read应该会返回。 ???
希望各位大虾解疑, 谢谢!
作者: tonyswe 发布时间: 2010-08-24
再说明白一点。 linux环境.
客户端已经长连接到服务端, 客户端发送查询请求, 发送完后,read接收数据。
服务端阻塞read接收客户端 查询数据请求, read返回后, 新创建子线程处理查询数据, 继续阻塞read.
子线程查询数据并write发送给客户端, 发送完后close, 子线程退出。
关键是发送完后close后, 客户端和服务端 都还阻塞在read上。
客户端已经长连接到服务端, 客户端发送查询请求, 发送完后,read接收数据。
服务端阻塞read接收客户端 查询数据请求, read返回后, 新创建子线程处理查询数据, 继续阻塞read.
子线程查询数据并write发送给客户端, 发送完后close, 子线程退出。
关键是发送完后close后, 客户端和服务端 都还阻塞在read上。
作者: tonyswe 发布时间: 2010-08-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28