美文网首页
【四】Epoll,信号事件中断和定时器

【四】Epoll,信号事件中断和定时器

作者: Michael_abc | 来源:发表于2019-04-13 22:25 被阅读0次

学习永无止境


写这个文章之前,我也参考了很多关于学习Nginx的文章和博客,特别是淘宝的文档

感觉自己精进不少。

该文章会分为四个部分,对于理解和学习Nginx或许会有新的帮助和见识。

1.Nginx中的Epoll与信号

Nginx在Linux下的epoll_wait阻塞等待后,worker进程还需要处理信号事件,这个时候信号量的抵达会打断epoll_wait阻塞,产生一个内核打断进程执行态错误,在Linux下有几种信号量是比较常用的。

信号量

下面说说几个重要的信号量

2 . SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程

14 . SIGALRM  滴答信号(我定义的)

17 . SIGCHLD 子进程结束时, 父进程会收到这个信号

2.Nginx中定时器与信号

Nginx中实现了定时器,主要是对连接和处理进行定时操作,例如连接Nginx后,但未在30秒内发送任何数据到Nginx时,Nginx会关闭连接,我最开始时不明白,查了很多博客和文章只是说Nginx用红黑树来保存和处理定时。

那Nginx的worker进程阻塞在epoll_wait时,需要定时打断这种阻塞来实现程序运行,epoll_wait是程序级别,需要打断这种组晒就需要更高级别的打断,那就是信号中断了,根据定时器的原理,需要隔一定时间运行一次,SIGALRM信号就是这种特性,滴答滴答。

相关文章

  • 【四】Epoll,信号事件中断和定时器

    学习永无止境 写这个文章之前,我也参考了很多关于学习Nginx的文章和博客,特别是淘宝的文档 感觉自己精进不少。 ...

  • 5.7、通讯代码精粹之epoll函数实战2

    1、ngx_epoll_process_events函数调用位置在子进程的for循环中。处理网络事件和定时器事件会...

  • 中断和信号

    信号是中断在进程中的模拟,中断分为异步中断和同步中断,异步中断是由外围硬件产生的,同步中断是由CPU产生的,如异常...

  • Day04

    Qt对象模型 信号和槽、对象属性系统、事件和事件过滤器、国际化翻译机制、定时器驱动、守卫指针(QPoint)、动态...

  • linux系统下进程的信号处理流程

    信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,...

  • Linux系统编程—信号

    信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,...

  • 信号

    信号 信号时事件发生时对进程的通知机制。有时也称为软件中断。信号与硬件中断的相似之处在于打断了程序执行的正常流程,...

  • libevent

    概念 libevent是基于事件驱动的网络框架库,它的事件分为:网络事件、定时器事件、信号事件等,所有的事件触发都...

  • epoll的事件

    epoll事件 这里主要说明epoll事件的触发情况,epoll具体怎么使用后续再补充吧 epoll_wait处理...

  • APUE信号

    第10章 信号 信号是软件中断 信号提供了一种处理异步事件的方法 10.2 信号概念 信号都以SIG开头 信号名都...

网友评论

      本文标题:【四】Epoll,信号事件中断和定时器

      本文链接:https://www.haomeiwen.com/subject/ofythqtx.html