找到约 1645 条结果
  • libevent定时器是怎么实现的
    在之前的文章里我们讲过,libevent最后处理都是在event_base_loop调用了相应的dispatch函数,定时器也是在dispatch函数中处理的。
    2019-08-23
  • android源码分析-深入MessageQueue
    承接上文在looper中会在一开始就创建一个MessageQueue,并且在loop中每次都会从其中取出一个message处理。那么我们就来看看这个MessageQueue:
    2017-03-09
  • io复用与epoll模型详解
    1.阻塞式io该io模型使得调用方阻塞等待数据到达,直到数据从内核拷贝到用户空间后才返回。2.非阻塞式io该io模型不会阻塞,当内核没有可读的数据时,调用该函数会返回一个错误。当内核有数据可读时,会等待数据从内核拷贝到用户空间然后返回。3.io复用该io模型下进程阻塞在select/poll上,select/pool本身持有多个io描述...
    2020-02-25
  • Blog.7 IO多路复用
    假设:启动一个WEB服务,服务端每accept一个连接,在内核中就会生成一个相应的文件描述符。现在服务器成功建立了10个连接,我们需要知道其中哪些连接发送过来了新的数据,然后对其进行处理和响应。
    2019-09-20
  • poll&epoll实现分析(二)——epoll实现
    通过上一分析,poll运行效率的两个瓶颈已经找出,现在的问题是怎么改进。首先,如果要监听1000个fd,每次poll都要把1000个fd 拷入内核,太不科学了,内核干嘛不自己保存已经拷入的fd呢?答对了,epoll就是自己保存拷入的fd,它的API就已经说明了这一点——不是 epoll_wait的时候才传入fd,而是通过epoll_ctl把所有fd传入内...
    2021-09-11
  • linux-bio与nio的区别
    application知道有I/O时间发生,但并不知道哪几个流,所以只能轮询所有流读取数据,时间复杂度O(n),同时处理的流越多,时间越多,且有最大连接限制
    2021-07-05
  • 深入剖析epoll
    在IO多路复用中select(poll)有诸多限制,很多人会说select的缺点是在Linux内核中,select所用到的FD_SET是有限的,(内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数)。但是更重要的缺点却触及不到:
    2019-03-10
    1
  • libevent是怎么选择底层实现的
    libevent实际封装了很多IO复用模式,比如evport,select,poll,epoll,devpoll等等,这些都是不同操作系统下的I/O多路复用模式,那么我们怎么知道当前使用的是哪种模式呢?
    2019-08-02
  • 「NIO源码」JavaNIO源码 & JNI分析一:linux API介绍
    最近重温网络的时候,突然发现,底层就那么些接口,java肯定也是封装了底层接口,看过我前面Nio相关的小伙伴肯定知道对这些类有点影响(Buffer,Channel,Selector,SelectionKey),可是跟底层对应不起来啊,这一篇就透过源码看一下,大概能帮助你更好的了解这几个类,及底层的实现。偏重个人兴趣向整理,如有不适,欢迎吐槽
    2022-09-20
  • 【系列教程】多线程实现都需要注意什么?
    首发地址day05 多线程实现都需要注意什么?项目仓库地址[链接],欢迎fork and star!往期教程day01-从一个基础的socket服务说起day02 真正的高并发还得看IO多路复用day03 C++项目开发配置最佳实践(vscode远程开发配置、格式化、代码检查、cmake管理配置)day04 高性能服务设计思路工作线程如何初始化?在我们的设计中,工...
    2022-08-25
  • io_uring vs epoll ,谁在网络编程领域更胜一筹?
    io_uring 在传统存储 io 场景已经证明其价值,但 io_uring 不仅支持传统存储 io,也支持网络 io。io_uring 社区有众多的开发者尝试将 io_uring 用于网络应用。我们之前也在《你认为 io_uring 只适用于存储 IO?大错特错!》中也探索过 io_uring 在网络场景的应用及其与传统网络编程基石 epoll 的对比,当时我们的测试结...
    2021-12-24
  • 逆向工程与云原生现场分析Part3—eBPF跟踪Istio/Envoy事件模型、连接与TLS握手与filter chain选择
    在上一篇 逆向工程与云原生现场分析 Part2 —— eBPF 跟踪 Istio/Envoy 之启动、监听与线程负载均衡 中,介绍了 如何用 bpftrace 去跟踪分析 Envoy Listener 的 socket 监听,和监听是如何分配到 worker 线程的。
    2022-03-22
  • epoll在Golang中的应用
    使用Golang可以轻松地为每一个TCP连接创建一个协程去服务而不用担心性能问题,这是因为Go内部使用goroutine结合IO多路复用实现了一个“异步”的IO模型,这使得开发者不用过多的关注底层,而只需要按照需求编写上层业务逻辑。这种异步的IO是如何实现的呢?下面我会针对Linux系统进行分析。
    2021-01-15
  • 【后端面经-Java】I/O多路复用 简录
    当一个线程进行I/O操作的时候,传统的做法是阻塞等待,直到I/O操作完成再继续后续的操作,这种IO方式就是BIO(Blocking I/O)。
    2023-07-10
  • 《Go组件设计与实现》-netpoll的总结
    我们知道linux万物皆文件,每个文件有个文件标识符fd,我们可以想象linux提供给我们的socket fd就是操作系统将传输层及以下的协议进行封装抽象化的一个接口。我们可以简单把socket理解成对应的一次tcp连接。 那么网络操作根本上也是针对网卡的IO操作,我们需要读取数据/写入数据,那么如何更加高效地处理数据呢?目前大...
    2022-01-19
  • 浅谈 select、poll 和 epoll
    select、poll和epoll都是 IO 多路复用的机制,能够监听多个文件描述符的读/写事件。一旦某个描述符就绪(一般是读或写事件发生了),就能够将发生的事件通知给关心的应用程序去处理该事件。
    2021-05-28
  • 预备知识:我读过的对epoll最好的讲解
    epoll 或者 kqueue 的原理是什么?为什么 epoll 和 kqueue 可以用基于事件的方式,单线程的实现并发?我没看过 linux 内核,对这方面一直有疑问……
    2015-10-01