找到约 1645 条结果
  • TCP与SOCKET
    三次握手 四次挥手 SOCKET 在内核中,会维护两个队列: 半连接队列(syn队列),存放处于SYN-RCVD状态的socket 全连接队列(accept队列),存放处于ESTABLISHED状态的socket accept函数会从全连接队列里取出一个连接,如果没有则阻塞。这里取出的是一个新的连接,叫已连接socket,不同于一开始创建的监听socket。Socket...
    2019-06-16
  • 【网络编程】I/O复用函数
    int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* expectfds, struct timeval* timeout);其中,nfds为select监听的最大文件描述符个数+1,fd_set是一个数据结构,其本质上是一个整形数组,数组中的每一个位都标记一个文件描述符,而fd_set的容量是由内核决定的,即select能同时处理的文件数量是有限的...
    2021-03-22
  • unix signal : signalfd, eventfd, timerfd
    If EFD_SEMAPHORE was not specified and the eventfd counter has a nonzero value, then a read(2) returns 8 bytes containing that value, and the counter's value is reset to zero.
    2017-05-01
  • io_uring vs epoll ,谁在网络编程领域更胜一筹?
    本文作者:王小光,「高性能存储技术SIG」核心成员。背景io_uring 在传统存储 io 场景已经证明其价值,但 io_uring 不仅支持传统存储 io,也支持网络 io。io_uring 社区有众多的开发者尝试将 io_uring 用于网络应用。我们之前也在《你认为 io_uring 只适用于存储 IO?大错特错!》中也探索过 io_uring 在网络场景的应用...
    2021-12-16
  • 细谈 Linux 中的多路复用epoll
    大家好,我是 V 哥。在 Linux 中,epoll 是一种多路复用机制,用于高效地处理大量文件描述符(file descriptor, FD)事件。与传统的select和poll相比,epoll具有更高的性能和可扩展性,特别是在大规模并发场景下,比如高并发服务器。
    2024-11-05
  • libevent 之IO事件循环
    这里,我们反向来分析,我们先不管怎么初始化变量,我们先看accept_cb这个回调函数怎么触发的。先看这个函数 event_base_dispatch 位于event.c
    2020-09-23
  • 高级IO模型之kqueue和epoll
    任何一个程序都离不开IO,有些是很明显的IO,比如文件的读写,也有一些是不明显的IO,比如网络数据的传输等。那么这些IO都有那些模式呢?我们在使用中应该如何选择呢?高级的IO模型kqueue和epoll是怎么工作的呢?一起来看看吧。
    2022-03-21
  • 异步请求的简单实现
    同步请求:server端发送数据到另一端,例如数据库服务器,或者server端发送rpc请求调用远程接口,在收到请求前,server端会阻塞,等待数据库端发送响应消息,当server端收到响应消息后,才进行之后的逻辑。异步请求:server端发送数据到另一端,在收到请求前,server端不阻塞,而是继续执行逻辑(有可能继续发送请求)。
    2023-05-17
  • java select epoll poll
    基本概念   IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取, 它就通知该进程. IO多路复用适用如下场合:   (1)当客户处理多个描述字时(一般是交互式输入和网络套接口), 必须使用I/O复用.   (2)当一个客户同时处理多个套接口时, 而这种情况是可能的, 但很少出现.   (3)如果一个TCP服务器...
    2019-07-22
  • 框架篇:见识一下linux高性能网络IO+Reactor模型
    网络I/O,可以理解为网络上的数据流。通常我们会基于socket与远端建立一条TCP或者UDP通道,然后进行读写。单个socket时,使用一个线程即可高效处理;然而如果是10K个socket连接,或者更多,我们如何做到高性能处理?
    2021-06-23
  • Linux IO模式及 select、poll、epoll详解
    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。
    2015-08-07
    66
  • 从libuv源码看清nodejs事件循环几个钻牛角尖的问题
    I/O,就是输入(input)和输出(output)的简写。Linux系统中,把一切都看做是文件。文件(常规文件、socket、FIFO、管道、终端……)就是一串二进制流,当信息交换中,我们对这些流进行数据的收发操作,就是I/O操作。当进程打开现有的文件或者创建新文件时,内核向进程返回一个文件操作符。文件操作符是一个索引,它就是...
    2021-11-05
  • 【Nginx源码研究】Nginx的事件模块介绍
    高并发是nginx最大的优势之一,而高并发的原因就是nginx强大的事件模块。本文将重点介绍nginx是如果利用Linux系统的epoll来完成高并发的。
    2018-10-30
  • tornado源码解析之IOLoop
    tornado是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架以开源软件形式开放给大众。
    2016-08-14
  • 【2-4 Golang】Go并发编程—网络IO
      我们都知道用户程序读写socket的时候,可能阻塞当前协程,那么是不是说明Go语言采用阻塞方式调用socket相关系统调用呢?你有没有想过,Go语言又是如何实现高性能网络IO呢?有没有使用传说中的IO多路复用,如epoll呢?
    2022-09-27
    1
  • 但是,I/O多路复用中是如何判断文件“可读”/“可写”的?
    那么,操作系统内核到底是如何判断某个文件描述符“可读”/“可写”呢?在达到相关状态后,是如何“立即”通知到应用程序的呢?本文在探究这个问题。
    2025-05-08
  • Linux IO模式及 select、poll、epoll详解(含部分实例源码)
    现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间划分为两部分,...
    2020-11-28