常见多线程与并发服务器设计方案举例分类:muduo网络库2013-11-04 21:25930人阅读评论(0)收藏举报并发服务器多线程reactorthreadpool一、3点基础知识1、一个主机的端口号为所有进程所共享,但普通用户进程绑定bind不了一些特殊端口号如20、80等。 多个进程不能同....
分类:
编程语言 时间:
2014-07-16 20:41:58
阅读次数:
216
上下文与全异步web服务器的关系请求上下文指在一个请求的处理过程中,把一些关键的信息保存下来的类似struct这样的结构体。每个http模块都可以有自己的上下文结构体,一般都是在刚开始处理请求时在内存池上分配它,之后当经由epoll、http框架再次调用到http模块的处理方法时,这个http模块可...
分类:
其他好文 时间:
2014-07-13 08:09:49
阅读次数:
218
select系统调用不仅对描述符的数量有限制,而且在高并发的情况下,哪怕只有一个活跃的套接字,也要轮询全部的fd set,而epoll采用回调的事件通知机制,只需要处理活跃的套接字。比如Nginx服务器采用的就是epoll,下面这个程序(当接收到大于10B的数据时)展示了epoll在边沿触发和电平触发的不同表现,在edge-trigger模式下,需要我们的程序一次将这次的事情处理完成(比如把数据全...
分类:
其他好文 时间:
2014-07-12 23:43:37
阅读次数:
307
epoll - I/O event notification facility在linux的网络编程中,非常长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的优点在于它不会随着监听fd数目的增长而减少效率。由于...
分类:
其他好文 时间:
2014-07-11 21:29:34
阅读次数:
357
Nginx为提高效率采用描述符缓冲池(连接池)来处理tcp连接,一个连接对应一个读事件和一个写事件,nginx在启动的时候会创建好所用连接和事件,当事件来的时候不用再创建,然而连接池的使用却存在stale事件的问题,以下将详细分析Nginx是如何处理stale事件的,该问题涉及到epoll、Nginx连接与事件的相关知识。
1
Epoll的实现原理
epoll相关的系统调用有:e...
分类:
其他好文 时间:
2014-07-11 08:14:35
阅读次数:
295
1) 能不能给一个使用epoll相关API进行IO监控的示例?在>中有一个简单的示例说明epoll相关API的使用, 但是这个示例是非常简单的, 它仅仅关注于如何使用epoll相关函数上面, 如果要更好的使用epoll, 还需要自己动手以及阅读资料.2) epoll和select都属于多路复用IO吗...
分类:
其他好文 时间:
2014-07-09 18:24:16
阅读次数:
201
不同的操作系统对应不同的事件驱动机制,在Linux 2.6之后使用epoll机制,对应的事件驱动模块是ngx_epoll_module。Nginx的ngx_event_core_module模块根据操作系统确定使用哪一个事件驱动模块。事件驱动模块在ngx_module_t的ctx通用接口是ngx_event_module_t,定义如下所示:
typedef struct {
ngx_st...
分类:
其他好文 时间:
2014-07-09 12:01:13
阅读次数:
230
一.epoll概述epoll是linux下的一个系统调用,用来监听大量文件描述符并对其上的触发事件进行处理。它是select/poll的增强版本,也是linux下多路复用io最常用的接口。要理解epoll是什么,首先得清楚什么是多路复用io。用户进行io操作需要经过内核,而如果所请求的io目前不满足...
分类:
其他好文 时间:
2014-07-08 00:50:02
阅读次数:
276
三者都是UNIX下多路复用的内核接口,select是跨平台的接口,poll是systemV标准,epoll是linux专有的接口,基于poll改造而成。 select 函数原型: intselect(intn, fd_set*readfds, fd_set*writefds, fd_set*exc....
分类:
其他好文 时间:
2014-07-03 11:44:36
阅读次数:
190
本版是个里程碑版本,可以通过本版了解多线程是如何通过IO线程读/写网络数据的,在前一个版本v0.12重点介绍了基础知识的前提下,本篇着重分析多线程逻辑里最重要的三个方法EventLoop::runInLoop/EventLoop::queueInLoop/EventLoop::doPendingFunctors。下面逐步介绍本版本修改的细节,三个方法放在最后的EventLoop节。...
分类:
其他好文 时间:
2014-06-30 00:54:45
阅读次数:
294