常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。(3)IO多路复用...
分类:
其他好文 时间:
2016-01-05 15:06:56
阅读次数:
148
http://segmentfault.com/a/1190000003063859#articleHeader6 原文同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的ne....
分类:
系统相关 时间:
2015-12-14 16:22:47
阅读次数:
262
一、引子 nio是java的IO框架里边十分重要的一部分内容,其最核心的就是提供了非阻塞IO的处理方式,最典型的应用场景就是处理网络连接。很多同学提起nio都能说起一二,但是细究其背后的原理、思想往往就开始背书,说来说去都是那么几句,其中不少人并不见的真的很理解。本人之前就属于此类,看了很多书和博客...
分类:
编程语言 时间:
2015-12-13 15:26:34
阅读次数:
317
与阻塞模式对应的另一种模式叫非阻塞IO模式,在整个通信过程中读和写操作不会阻塞,当前处理线程不存在阻塞情况。从A机器到B机器它的通信过程是:A机器一条线程将通道设置为写事件后往下执行,而另外一条线程遍历到此通道有字节要写并往socket写数据,B机器一条线程遍历到此通道有字节要读,交给另外一条线程对socket读数据,处理完又把通道设置为写事件,遍历线程遍历到此通道有字节要写,又往socket写数...
分类:
其他好文 时间:
2015-12-07 16:21:16
阅读次数:
332
本文介绍Java BIO(同步阻塞IO),伪异步IO,NIO(非阻塞IO),AIO(异步IO)这四种IO的情况,并对不同IO模型作比较。目录1.BIO2.伪异步IO3.NIO4.AIO5.四种IO比较6.BIO\伪异步IO\NIO\AIO源码下载1.BIO采用BIO通信模型的服务器,通常由一个独立的...
分类:
Web程序 时间:
2015-11-27 19:23:17
阅读次数:
200
下面这篇,原理理解了,再结合 这一周来的心得体会,整个框架就差不多了。。。http://www.haiyun.me/archives/1056.html有许多封装好的异步非阻塞IO多路复用框架,底层在linux基于最新的epoll实现,为了更好的使用,了解其底层原理还是有必要的。下面记录下分别基于S...
分类:
编程语言 时间:
2015-11-25 22:17:39
阅读次数:
279
这个又牛X 一点点。。这还不涉及IO,如果调用GEVENT之类作异步IO或非阻塞IO,那就大框架都有啦。。###################################################################### Iterative server - webserv...
分类:
编程语言 时间:
2015-11-25 18:46:51
阅读次数:
175
如果看到过我前些天写过的《轻松把玩HttpClient之模拟post请求示例》这篇文章,你再看本文就是小菜一碟了,如果你顺便懂一些NIO,基本上是毫无压力了。因为HttpAsyncClient相对于HttpClient,就多了一个NIO,这也是为什么支持异步的原因。不过我有一个疑问,虽说NIO是同步非阻塞IO,但是HttpAsyncClient提供了回调的机制,这点儿跟netty很像,所以可以模拟...
分类:
Web程序 时间:
2015-11-23 10:07:15
阅读次数:
338
这个只是作了第一个样例,里面还有很多高级的技巧,希望以后用得着。我觉得因为以前看过几本LINUX内核,关于异步非阻塞IO,信号,锁之类的,所以理解起来,还可以。import geventdef foo(): print 'Running in foo' gevent.sleep(0) ...
分类:
编程语言 时间:
2015-11-18 22:56:57
阅读次数:
156
Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非阻塞 IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用...
分类:
其他好文 时间:
2015-11-04 11:39:30
阅读次数:
258