站内搜索
浏览量Top10
- linux多线程编程,你还在用sleep么?用pthread_cond_timedwait吧 - 1,342 views
- python中thread的setDaemon、join的用法 - 482 views
- 编译错误:ISO C++ forbids declaration of *** with no type - 456 views
- 关于linux文件读写的几个系统调用 - 445 views
- 单反如何拍月亮(满月) - 380 views
- [zz]windows宿主机,ubuntu虚拟机下的上网设置(有线网络和无线网络) - 358 views
- 网络编程的一些事 - 316 views
- shell ssh登陆后执行一段代码 - 291 views
- sstable入门阶段——HFile(version1)结构解析与c++读实现 - 267 views
- thrift网络传输模型 - 250 views
-
最近文章
分类
-
barrier C/C++ compile error DP free heap join kill make_heap malloc memcpy mmap network pop_heap pread pthread_cond_timedwait push_heap read readahead rm setDaemon shell signal singleton socket thread thrift vector wish 函数栈 动态规划 华表 卧佛寺 参数校验 域名 夜景 大裤衩 天安门 指针 枚举 游历 游戏 类型转换 返回值 面试 C/Cplusplus (14)
Help me (4)
linux (7)
NoSQL (1)
Programming language (1)
python (1)
shell (4)
web (1)
代码人生 (7)
分布式系统 (2)
摄影 (9)
操作系统 (1)
数据库 (1)
未分类 (3)
算法 (1)
编译问题与优化 (2)
网络 (1)
蛋疼系列 (8)
转载 (5)
随笔 (4)
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.
日归档:2012 年 02 月 22 日
同步、异步、阻塞、非阻塞是什么意思
同步、异步、阻塞、非阻塞这4个词在计算机IO和网络模型中非常常见。今天我自己给别人解释,又把自己解释糊涂了。回忆了国外操作系统中一个投递邮件的例子。 理解时应该组合着理解,有以下四种情况: 现在你是一个邮递员。 同步阻塞:把邮件投递到hiwgy家的邮箱中,然后站在邮箱旁边等,等到hiwgy把邮件取走了,你才继续投递下一封邮件。 同步非阻塞:把邮件投递到hiwgy家的邮箱中,然后你就继续投递下一封邮件;但是,你不停得给hiwgy打电话,问他是否收到了邮件。 异步阻塞:把所有邮件投递到所有收件人的邮箱中,然后你回到了家里,你开始等收件人给你打电话。 异步非阻塞:把邮件投递到hiwgy家的邮箱中,然后你继续投递下一封邮件,hiwgy突然给你打了个电话,告诉你他收到邮件了,你知道了。 如果要单独理解“同步和异步”,或者单独理解“阻塞和非阻塞” 同步和异步:感觉这个不好解释。同步主要指你的线程要主动关注你的行为是否达到目标了;异步,会有别人通知你,你的行为达到目标了。 阻塞和非阻塞:指你自己的线程,是否需要wait。比如一个IO写函数调用,如果你需要等待写操作执行完毕,函数才返回,那么就是阻塞;如果写操作并未执行完毕,函数就返回,那么就是非阻塞。