Libevent,libev,libuv三者的区别所在? libevent提供了全套解决方案(事件库,非阻塞IO库,http库,DNS客户端),然而libevent使用全局变量,导致非线程安全。它的watcher结构也过大,把I/O、计时器、信号句柄整合在一起。而且(作者认为)libevent的附加 ...
分类:
其他好文 时间:
2016-12-19 08:50:48
阅读次数:
258
IO-同步,异步,阻塞,非阻塞1.什么是IO数据在系统内核(kernel)和用户进程之间的传递,称为IO。 2.IO操作步骤以read为例,涉及两个系统对象,调用IO的process(or thread),即用户进程;另一个为系统内核(kernel)。当用户进程调用recvfrom操作时,会经历两个 ...
分类:
其他好文 时间:
2016-11-28 23:21:23
阅读次数:
191
异步IO 下面摘子李刚的《疯狂JAVA讲义》 按照POSIX标准来划分IO,分为同步IO和异步IO。对于IO操作分为两步,1)程序发出IO请求。 2)完成实际的IO操作。 阻塞IO和非阻塞IO都是针对第一步来划分的,如果发出IO请求会阻塞线程,就是阻塞IO,否则就是非阻塞IO。 同步IO和非同步IO ...
分类:
编程语言 时间:
2016-11-21 23:25:35
阅读次数:
255
阻塞IO与非阻塞IO 通常情况下的Socket都是阻塞式的, 程序的输入输出都会让当前线程进入阻塞状态, 因此服务器需要为每一个客户端都创建一个线程。 从JAVA1.4开始引入了NIO API, NIO可以实现非阻塞IO, 这样就可以使用一个线程处理所有的客户请求。 基于NIO的非阻塞Socket通 ...
分类:
编程语言 时间:
2016-11-21 22:51:44
阅读次数:
214
1.类与类之间的关系:依赖,实现,泛化(继承),关联,组合,聚合。 1)依赖(虚线):一个类是 另一个类的函数参数 或者 函数返回值。 2)实现(实线加小圆):对纯虚函数类(抽象类)的实现。 3)继承 即 泛化(实线加空心三角形,从子类指向父类):表示一个类与另一个类之间的继承关系; 4)关联(实线 ...
分类:
其他好文 时间:
2016-11-20 18:12:49
阅读次数:
617
阻塞IO的效率是在是低下,你如果要写高性能的web server的话,你必须使用非阻塞IO.非阻塞IO的读写在谈到非阻塞IO之前,必须先谈一谈阻塞IO,在网络编程中,我们假设有一个监听套接字的sock...
分类:
编程语言 时间:
2016-11-04 11:44:35
阅读次数:
200
同步非阻塞IO (NIO) NIO是基于事件驱动思想的,实现上通常采用Reactor(http://en.wikipedia.org/wiki/Reactor_pattern)模式,从程序角度而言,当发起IO的读或写操作时,是非阻塞的;当socket有流可读或可写入socket时,操作系统会相应的通 ...
分类:
编程语言 时间:
2016-10-20 15:24:20
阅读次数:
297
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO ...
分类:
其他好文 时间:
2016-10-19 02:32:04
阅读次数:
135
而一个NIO的实现会有所不同,下面是一个简单的例子: Java代码 ByteBuffer buffer = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buffer); Java代码 Java代码 注意第二行,从通道读取字节到Byt ...
分类:
其他好文 时间:
2016-10-19 02:04:47
阅读次数:
118
一、概念说明 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的环境给出的答案是不同的。所以先限定一下本文的环境。本文讨论的背景是Linux环境下的network IO 在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述 ...
分类:
编程语言 时间:
2016-10-14 11:52:54
阅读次数:
181