1小时让你掌握响应式编程
|
的话,可以认为代码执行其实就是一些行为动作,这些行为动作的目的就是为了获取/操作数据。 例如加法,这里的行为动作就是执行相加,数据就是加数和被加数。操作结果就是得到了另一个数据,即两个数的和。 只是在这个加法里,数据跑的特别快,(CPU的寄存器,能不快吗),我们几乎觉察不到执行动作在等数据的过程。怎么办呢,那就看一个能把它们拉开的例子。 那自然非数据库查询莫属了,既有网络I/O,又有磁盘I/O,肯定会慢一些。 假设我的业务是这样的,代码先去数据库查询一个用户,接着修改用户的密码,然后再更新回数据库,最后代码返回成功。 如果网速和数据库都很慢的话,可能是这样的。代码执行一个查询数据库动作,然后等啊等啊等,等的花都谢了,终于数据库把用户返回过来了,接着,代码飞快的修改了密码,并执行一个更新数据库的动作,然后又是等啊等啊等,等的花又开了,数据库终于回话了,更新成功。然后代码返回成功,全部执行完了。 所以同步阻塞代码的最大特点就是,带着数据上路,数据不到位就阻塞住。 最后来个小小的升华:
一言以蔽之,同步是目的,阻塞是手段。 我看异步非阻塞 “你知道什么是异步非阻塞吗”,当然知道了,不过我不知道该怎么看它。“哦,恭喜你都会抢答了。。。”。 我们生活在异步的世界,却是最不懂异步的人。 你去饭店吃饭,服务员把你的菜单写好,交给厨房后就去服务别人了。 厨房把饭做好后,通过按铃通知服务员,服务员再把饭送到你的位置上。 服务员是主(或I/O)线程,把任务交给厨房这个工作线程去执行,厨房接到任务的同时还要记住送来该任务的服务员,然后厨房去执行任务,服务员也去忙别的了。 厨房执行完任务后,对当时的那个服务员进行通知,服务员接到通知后,再去执行接下来的内容,如把饭送到客人餐桌。
这是一个非常常见的异步场景,由于其中一方不愿意等待(或时 (编辑:孝感站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


