首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

【转】同步、异步、拥塞、非阻塞

2012-07-18 
【转】同步、异步、阻塞、非阻塞转自:http://blog.hiwgy.com/2012/02/22/synchronous_asynchronous_block_unblo

【转】同步、异步、阻塞、非阻塞
转自:http://blog.hiwgy.com/2012/02/22/synchronous_asynchronous_block_unblock/

同步、异步、阻塞、非阻塞这4个词在计算机IO和网络模型中非常常见。今天我自己给别人解释,又把自己解释糊涂了。回忆了国外操作系统中一个投递邮件的例子。

理解时应该组合着理解,有以下四种情况:
现在你是一个邮递员。
同步阻塞:把邮件投递到hiwgy家的邮箱中,然后站在邮箱旁边等,等到hiwgy把邮件取走了,你才继续投递下一封邮件。
同步非阻塞:把邮件投递到hiwgy家的邮箱中,然后你就继续投递下一封邮件;但是,你不停得给hiwgy打电话,问他是否收到了邮件。
异步阻塞:把所有邮件投递到所有收件人的邮箱中,然后你回到了家里,你开始等收件人给你打电话。
异步非阻塞:把邮件投递到hiwgy家的邮箱中,然后你继续投递下一封邮件,hiwgy突然给你打了个电话,告诉你他收到邮件了,你知道了。

如果要单独理解“同步和异步”,或者单独理解“阻塞和非阻塞”
同步和异步:感觉这个不好解释。同步主要指你的线程要主动关注你的行为是否达到目标了;异步,会有别人通知你,你的行为达到目标了。
阻塞和非阻塞:指你自己的线程,是否需要wait。比如一个IO写函数调用,如果你需要等待写操作执行完毕,函数才返回,那么就是阻塞;如果写操作并未执行完毕,函数就返回,那么就是非阻塞。

热点排行