码迷,mamicode.com
首页 > 其他好文 > 详细

同步、异步、阻塞、非阻塞

时间:2017-10-12 19:03:43      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:数据库   可靠   同步阻塞   用法   异步操作   遇到   oss   page   备份   

同步与异步

(1)所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。

要么成功都成功,失败都失败,两个任务的状态可以保持一致。

 (2)异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完

成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列。我们可以用打电话和发短信来很好的比喻同

步与异步操作。

在设计到 IO 处理时通常都会遇到一个是同步还是异步的处理方式的选择问题。因为同步与异步的 I/O 处理方式对调用者的影响很大,在数据库产

品中都会遇到这个问题。因为 I/O 操作通常是一个非常耗时的操作,在一个任务序列中 I/O 通常都是性能瓶颈。但是同步与异步的处理方式对程

序的可靠性影响非常大,同步能够保证程序的可靠性,而异步可以提升程序的性能,必须在可靠性和性能之间做个平衡,没有完美的解决办法。

 

阻塞与非阻塞

阻塞与非阻塞主要是从 CPU 的消耗上来说的

(1)阻塞就是 CPU 停下来等待一个慢的操作完成 CPU 才接着完成其它的事。

(2)非阻塞就是在这个慢的操作在执行时 CPU 去干其它别的事,等这个慢的操作完成时,CPU 再接着完成后续的操作。虽然表面上看非阻塞的

方式可以明显的提高 CPU 的利用率,但是也带了另外一种后果就是系统的线程切换增加。增加的 CPU 使用时间能不能补偿系统的切换成本需

要好好评估。

 

两种的方式的组合

 

出处:

深入分析 Java I/O 的工作机制

参考:

tornado: 异步、非阻塞

同步、异步、阻塞、非阻塞

标签:数据库   可靠   同步阻塞   用法   异步操作   遇到   oss   page   备份   

原文地址:http://www.cnblogs.com/yuyutianxia/p/7657269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!