当系统启动时,epoll进行初始化: 1 static int __init eventpoll_init(void) 2 { 3 mutex_init(&pmutex); 4 ep_poll_safewake_init(&psw); 5 epi_cache = kmem_c...
分类:
其他好文 时间:
2014-08-05 13:51:59
阅读次数:
431
首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select?and?poll) signal driven I/O (SIGIO) asynchronous I/O (the POSIX?aio_functions) blocking I/O? 这...
分类:
其他好文 时间:
2014-08-04 14:47:17
阅读次数:
241
0.春阳语录,代码嵌套三层以上就是一坨垃圾。因此良好的编程风格从封装开始。1.封装select服务器模型 1.1 如何封装?将select需要的数据结构都封装成结构体,通过参数在函数之间传递,将固定的操作封装成相应的函数。 1.2 封装后的程序: 1.2.1 封装的头文件 select_t...
分类:
系统相关 时间:
2014-07-31 23:23:40
阅读次数:
442
#include #include #include #include #include #include #include #include #include #include "rio.h"#include #include #define ERR_EXIT(m) \ do { \ ...
分类:
编程语言 时间:
2014-07-31 02:35:06
阅读次数:
411
1.迭代服务器模型 1.1 迭代服务器是处理多个请求时一种最简单直接的思路,即使用while循环,它不具有并发能力,即必须一个一个的处理客户的请求。 1.2 程序示例。#include "def.h"int listenfd_init(); //返回一个处于监听状态的套接字描述符void do...
分类:
编程语言 时间:
2014-07-31 02:18:25
阅读次数:
365
1.select 模型 1.1 select 函数原型如下,其中 nfds 表示的描述符的最大值加1(因为这里是左闭右开区间),中间三个参数分别表示要监听的不同类型描述符的集合,timeout用来表示轮询的时间间隔,这里用NULL表示无限等待。 1.2 使用 select函数编写客户端程...
分类:
系统相关 时间:
2014-07-30 00:57:12
阅读次数:
476
一个tcp的客户端服务器程序服务器端不变,客户端通过I/O复用轮询键盘输入与socket输入(接收客户端的信息)服务器端: 1 /*selcet服务器客户端模型: 2 1.客户端关闭后,服务器再向客户端发送信息,第一次会收到一个RST复位报文,第二次会收到SIGPIPE信号,导致服务器关闭,必须对这...
分类:
其他好文 时间:
2014-07-30 00:51:22
阅读次数:
492
linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct t...
分类:
其他好文 时间:
2014-07-29 20:41:12
阅读次数:
338
http://blog.csdn.net/sunboy_2050/article/details/6126712select用法#include #include #include #include int select(int n, fd_set *readfds, fd_set *writ...
分类:
其他好文 时间:
2014-07-29 20:38:45
阅读次数:
384