QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1077|回复: 3

异步 非阻塞有什么区别???

[复制链接]
发表于 2003-12-5 13:15:28 | 显示全部楼层 |阅读模式
异步 非阻塞有什么区别???
发表于 2003-12-5 22:00:52 | 显示全部楼层
异步的概念是相对于同步来说的,异步(asynchronism)指一系列的事件发生没有前后的关系。

非阻塞和阻塞是相对的。
回复

使用道具 举报

 楼主| 发表于 2003-12-6 11:43:49 | 显示全部楼层
direstrait, 能不能解释得详细点?

同步、异步的实质是什么?阻塞呢?

在实现上有什么区别?
回复

使用道具 举报

发表于 2003-12-6 13:24:45 | 显示全部楼层
同步:举个例子,有两个进程p1,p2,他们之间有依赖型,比如p2必须等p1运行完了以后才能运行,即p1->p2,这个就是同步的概念。异步则表示进程之间没有先后运行的关系。
同步一般是用进程之间的通信来实现的,在UNIX下的可以用信号量(semaphore)或者锁来实现。不过也有那种用sleep()函数来实现进程间的同步的。
异步经常指异步I/O,用select或者poll来实现。

阻塞I/O很常见,比如读一个管道(pipe)的时候无数据可读,读管道函数将被阻塞。

非阻塞I/O指那些不会引起阻塞的操作,比如read,write,open等几个操作,只要操作不能完成,则马上返回出错。

阻塞的实现是由操作系统完成的,进程一般有几种状态,比如:运行态(running),阻塞(blocked),睡眠(sleep)等等状态,阻塞往往是由于进程正在等待某种资源而被阻塞。比如,临界访问区的互斥。

再多一些的介绍,可以看看操作系统书,具体I/O相关的书那本Advanced programming in Unix Evironment(unix高级环境编程)写的非常清楚,建议读一读。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-9 05:48 , Processed in 0.070709 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表