当前位置:首页 > TAG信息列表 > poll函数编程教学在非阻塞模式上怎么知道recv接收数据完成?介绍

poll函数编程教学在非阻塞模式上怎么知道recv接收数据完成?介绍

poll函数编程教学 在非阻塞模式上怎么知道recv接收数据完成?

在非阻塞模式上怎么知道recv接收数据完成?

以linux下的tcpsocket编程为例:阻塞是指recv/read时,如果socket接收缓冲区有数据,我会一直保持清醒,直到有数据来了,我才读完。

在发送/写的时候,如果发送缓冲区满了,没有空间继续发送,我就睡觉,磨蹭,直到发送缓冲区腾出足够的空间让我把所有的数据都塞进发送缓冲区。

(当然,如果你通过setsockopt设置了读写超时,超时到期后仍然会返回-1和eagain,不会等待睡眠。)

poll函数编程教学 在非阻塞模式上怎么知道recv接收数据完成?

非阻塞是指在recv/read时,如果接收缓冲区有数据并且我读完了,如果没有数据,我会直接带着返回的-1和egain离开,绝不会休眠等待任何延迟。

写/发送时,如果发送缓冲区有足够的空间,立即将数据放入发送缓冲区,然后离开。如果发送缓冲区已满,空间不足,直接用返回的-1和eagain离开。至于io多路复用,首先要理解的是操作系统为你提供了一个功能。当你的一个套接字接收缓冲区有数据要读或者发送缓冲区有空间要写时,它会给你一个通知。

这样在配合非阻塞socket使用的时候,我只会在系统通知我可以读取哪个描述符的时候进行读取操作,这样可以保证我每次读取的时候都能读取到有效数据,除了return-1和eagain我什么都不会做。

写操作是相似的。

操作系统的这个功能被select/poll/epoll等系统调用函数使用,可以同时监控多个描述符的读写准备情况,使得多个描述符的i/o操作可以在一个线程中完成,称为i/o复用。,其中"再利用和指的是同一线程的重用。至于事件驱动,其实是i/o复用的另一种叫法。至于异步同步,我们在linux下常见的网络编程模型大多是同步io。以读操作为例,本质上用户需要调用re。ad/recv在处理业务逻辑之前从内核缓冲区读取数据。

异步io意味着内核已经读取了数据,用户直接处理逻辑。

异步io一般使用linux下的aio库。

java初学推荐书籍有哪些?

排名不分先后

effectivejava

了解过java的人应该或多或少听过这本书,堪称经典。书中主要列举了一些知识点,然后分别对这些知识点进行阐述。内容相当深入,推荐有基础的人阅读。

thinkingwithjava4

java思维被誉为java圣经。不管你处于什么阶段,每次看都能有所收获。所以,对于初学者来说,这本书有褒有贬。你自己想想。

java并发编程实践

外国人写的书,这是翻译版,原著《javaconcurrencyinpractice》,堪称并发中的经典之作。翻译的也很好,书内容偏理论,基本知识点都能概括。当然这本书还是要适合有一点并发基础的人,零基础的看起来会有点吃力。这本书可以大量阅读。一遍又一遍,你不看一遍也会有新的理解。

对java虚拟机的深刻理解

这本书也很经典,作者是国内的,在市场泛滥的今天,也算是上品了。书中对jvm进行了详细而深刻的讲解,是学习jvm原理的必备书籍。

头部优先设计模式

headfirst系列教材,看起来特别轻松,图文并茂,通俗易懂,适合初学者选择。

重构——改进现有代码的设计

书中给出了70多个可行的重构,每个重构都介绍了一个经过验证的代码转换技术的动机和技术。本书中提出的重构标准将帮助您一次一小步地修改代码,从而降低开发过程中的风险。

mysql技术内幕

本文从源代码的角度深入分析了innodb的体系结构、实现原理和工作机制,并给出了大量的最佳实践,可以帮助您系统深入地掌握innodb,更重要的是可以为您设计和管理高性能、高可用的数据库系统提供优秀的指导。

另外,我可以和大家分享一下这几年收集的关于java三个方面的书籍。大概有几个g你可以通过回复"java书籍和杂志在后台。如果对你有帮助,请点击喜欢。

java数据编程书籍


嘉华号 全高达

  • 关注微信关注微信

猜你喜欢

热门标签

wps图片分辨率怎么调整 Excel输入学号用什么格式 富士施乐m118打印机连接电脑教程介绍 axure页面跳转 vivo手机黑屏但是有声音介绍 苹果手机开热点为什么卡 word字体5cm怎么设置Word字体设置介绍 美团外卖会员用不用开通 抖音怎样才能获得微信登录授权 家庭电路常见故障及判断方法 电子书可以说成电子邮件格式吗介绍 WPS表格锁定表头的步骤 怎么才能注册微信号 round函数怎么算平均分excel如何把一个函数设置为常用函数?介绍 淘宝怎么一个链接上传多个产品直播怎么发链接?介绍 怎么直接传文件?介绍 如果没有二维码怎么下载软件车载浏览器怎么下载app?介绍 vivos12参数 京东怎么看商品排行榜京东如何查看词热度?介绍 小米civi2的卡槽在什么位置小米civi如何插手机卡? 海尔电视为什么找不到usb接口海尔液晶电视怎么放u盘?介绍 需要首先学什么知识?介绍 怎么用app制作架构图word文档组织结构图如何连跳两级?介绍 苹果手机桌面图标删除了在哪找回苹果手机图标隐藏怎么恢复? ps多边形工具怎么调整多边形照片PSCS5从套索工具和多边形套索互换的快捷键? 怎么把游戏写成卡片在word里怎样在电脑上做新年贺卡? 天眼怎么查询企业信息天眼查企业历史信息是什么意思? oppofindx2手机日常使用技巧oppofindx2看电影卡顿? 滴滴app怎么调大字体滴滴车主抽检验证不了?介绍 苹果手机与手表配对不成功

微信公众号