网络程序中经常会遇到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)这四种概念。同步与异步区别在于调用结果是否通过事件、回调、状态报告等方式告知调用者;同步:调用者一直等待调用结果返回;异步:调用以后不会一直等待结果,会通过事件、回调、状态报告等方式告知调用者;而阻...
分类:
系统相关 时间:
2014-06-16 07:21:16
阅读次数:
330
http://blog.chinaunix.net/uid-20751538-id-238260.html 非阻塞accept 当一个已完成的连接准备好被accept的时候,select会把监听socket标记为可读。因此,如果用select等待外来的连接时,应该不需要 把监听socket设置为非阻...
分类:
其他好文 时间:
2014-06-16 00:07:49
阅读次数:
345
web优化必须了解的原理之I/o的五种模型和web的三种工作模式
===========================================
图解五种I/O模型
图解web支持的三种工作模式
===========================================
五种I/O:
1)阻塞I/0
2)非阻塞I/O
3)I/O复用
4)...
分类:
Web程序 时间:
2014-06-15 07:50:59
阅读次数:
222
第一章 Thread导论
为何要用Thread ?
非阻塞I/O
I/O多路技术
轮询(polling)
信号
警告(Alarm)和定时器(Timer)
独立的任务(Task)
并行算法
第二章 Thread的创建与管理
一、什么是Thread ?
Thread是所在主机执行的应用程序任务(task)。
...
分类:
编程语言 时间:
2014-06-14 07:35:10
阅读次数:
367
recvfrom阻塞接收的问题,网络不通就一直等,想改成非阻塞的,也不可靠谱。最后设置了一个超时时间
struct timeval tv_out; tv_out.tv_sec = 5;//等待10秒 tv_out.tv_usec =
0;setsockopt(s...
分类:
其他好文 时间:
2014-06-11 11:43:41
阅读次数:
190
阻塞和非阻塞IO
阻塞IO指当进行IO操作时, 如果IO操作无法立即完成,当前线程进入阻塞状态,直到IO操作完成,IO函数返回。
非阻塞IO指当进行IO操作时,如果IO操作无法立即完成,IO函数立即返回,线程不会阻塞。
写与读操作对阻塞与非阻塞IO的语义
写操作,只有完成所有指定数据的写入时,写操作才算完成。
读操作,只要能读取到数据,读操作就算完成。...
分类:
其他好文 时间:
2014-06-11 07:12:32
阅读次数:
316
Java NIO即Java Non-blocking IO(Java非阻塞I/O),因为是在Jdk1.4之后增加的一套新的操作I/O工具包,所以一般会被叫做Java New IO。NIO是为提供I/O吞吐量而专门设计,其卓越的性能甚至可以与C媲美。...
分类:
编程语言 时间:
2014-06-10 11:02:26
阅读次数:
270
transport代表网络上两个节点的连接。它描述了连接的具体细节,如TCP还是UDP。transports实现了ITransport接口,包含以下方法write:以非阻塞的方式向连接写数据。writeSequence:向连接写入字符串列表。(适合面向行的协议)loseConnection:写入所有...
分类:
其他好文 时间:
2014-06-10 09:34:29
阅读次数:
198
一、用途:
1.提高程序效率
默认情况下connect函数是阻塞的,它发起TCP连接的三路握手。完成一个connect需要花费一个RTT时间(从本地主机到对端再回到本地),RTT的波动范围很大,局域网上几毫秒到几百毫秒,广域网上甚至能需要几秒,这对计算机来说是非常漫长的时间,这段时间可以用来执行其他的处理工作,提高效率。因此非阻塞的connect函数是必要的。
2.同时建立多个连接,不必...
分类:
其他好文 时间:
2014-06-08 02:59:20
阅读次数:
300
要说Node.js的历史,就不得不说说V8历史。在此之前我们先一句话描述一下什么是Node.js:Node.js是一个基于Google Chrome V8
Javascript引擎之上的平台,用以创建轻量级、快速、可扩展、事件驱动和非阻塞I/O的应用。现在我们来说说Node.js的源头——V8 ja...
分类:
Web程序 时间:
2014-06-08 01:35:08
阅读次数:
265