找到约 2025 条结果
  • Go中的网络轮询器(1)--Epoll在Go中的抽象
    Go用netpoll实现对不同操作系统的I/O多路复用的抽象(或者说是封装),Go中多路复用与平台无关。编译器在编译时根据平台的不同使用不同的多路复用器进行编译。
    2022-09-07
  • I/O并发编程总结
    在传统的网络服务器的构建中,IO模式会按照Blocking/Non-Blocking、Synchronous/Asynchronous这两个标准进行分类,其中Blocking与Synchronous基本上一个意思,而NIO与Async的区别在于NIO强调的是Polling(轮询),而Async强调的是Notification(通知)。譬如在一个典型的单进程单线程Socket接口中,阻塞型的接口必须在上一个...
    2016-04-10
    3
  • 文档上说epoll监听的描述符可写的时候会触发EPOLLOUT事件, 可是我想知道在接受到EPOLLOUT后,调用write还有限制吗,比如write过大的数据会不会还是返回EAGAIN。 想像这样的场景 服务器收到客户端的请求,要获取一张图片。 服务器读取该图片,保存为字节数组(**char***) 然后调用write欲将数据写入套接字,却返回EAGAIN ...
    2015-01-12
    4
    ✓ 已解决
  • Redis单线程为什么快
    为啥这么快:1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接;
    2020-06-09
  • 如题,看大家都这么说,但不知道是为什么。我知道io模型上nginx是采用epoll, 而apache是select,因此说nginx要比apache高效。但在处理静态和动态上为什么说nginx适合处理静态,apache处理动态?
    2016-12-16
  • 【随笔】异步编程浅析
    1.最近研究redis关于主从复制的功能实现,发现客户端实时响应slaveof的命令后,把主从复制添加到epoll的时间事件中再进行操作。因此有疑问,redis是如何进行文件和时间事件的调度
    2018-10-24
  • 记一次 strace 追踪的 Docker + VirtualBox 的底层 bug
    Docker 是一种容器技术,它可以提供一个隔离的环境,让用户的程序运行在一个完全隔离的虚拟的系统里,但 Docker 不是虚拟化,使用 Docker 可以在 Linux 上实现对于任意程序打包一次,到处运行。愿意接受安利的同学请移步 [链接] 。
    2016-02-03
    5
  • (有一些代码是和线程池有关的,所以可以不看)我先把这个Web服务器开启,然后用浏览器去连接这个服务器,此时,对于同一个连接,触发了两次EPOLLIN事件。实验的图片是这样的:然后我在浏览器查看网络请求:然后服务器的反应是:可以看出,我只用浏览器连接了一次服务器,但是server_sock这个绑定的socket文件描述符却触...
    2017-12-06
    3
  • epoll不是“GCC的类库”,它是Linux专有API,在Mac上无论你用什么编译器都一样用不了的。Mac和FreeBSD有一个类似的功能叫kqueue。
    2018-08-04
  • 首先我们以 Tencent/libco 的使用样例 example_echosvr.cpp 为例,阐述我的疑惑,是真的搞不懂了,真心希望得到帮助.
    2019-03-12
  • [链接] 文章中说的很清楚select/poll/epoll,一个进程监听多个Socket状态的时候是阻塞的,如果有就绪的Socket就会返回就绪状态,这时候就会从阻塞态转换到正常状态,如果业务处理完成又会回到阻塞态,继续等待下个就绪状态。一个进程接收多个Socket的数据,以免一个Socket对一个进程导致线性资源(内存)开销。select/po...
    2017-07-28
  • Redis 为什么这么快?
    使用单线程,可以避免不必要的上下文切换和竞争条件,没有多进程或多线程引起的切换和 CPU 的消耗,不必考虑各种锁的问题,没有锁释放或锁定操作,不会因死锁而降低性能;
    2020-02-26
  • 从源代码角度看epoll在Go中的使用(一)
    Go提供了功能完备的标准网络库:net包,net包的实现相当之全面,httptcpudp均有实现且对用户提供了简单友好的使用接口。在Linux系统上Go使用了epoll来实现net包的核心部分,本文从用户接口层入手,分析Go在Linux平台上的epoll使用,文中若有不当之处请指出。
    2020-02-22
  • 高性能服务器开发基础系列 (一)主线程与工作线程的分工
    服务器端为了能流畅处理多个客户端链接,一般在某个线程A里面accept新的客户端连接并生成新连接的socket fd,然后将这些新连接的socketfd给另外开的数个工作线程B1、B2、B3、B4,这些工作线程处理这些新连接上的网络IO事件(即收发数据),同时,还处理系统中的另外一些事务。这里我们将线程A称为主线程,B1、B2、B3、B4...
    2018-05-23
  • Linux Kernel 不是开源的吗?看内核源码不就得了? 中文技术博客东抄西抄,遇事不决 Google 一下,你看搜 linux epoll mmap 关键词有英文结果吗?
    2020-05-08
  • 底层调用的是 SwooleG.main_reactor->wait ,会不断循环阻塞在 reactor->wait 上,直到有信号或者读写就绪事件触发。
    2019-10-12
  • 彻底搞懂 IO 底层原理
    “道”  最基础的计算机理论,隐藏于表象之下,非常抽象、晦涩难懂,需要用具象化的事物加以理解;“术” 具体的技艺,它有可能是一门语言,比如:python 出手见效快;
    2020-11-30