同步编程 vs 异步编程

2017-06-18  本文已影响651人  linheimx

同步的编程模型

简单描述:
一个线程获得了一个任务,然后去执行这个任务,
当这个任务执行完毕后,才能执行接下来的另外一个任务。
注意:
这个线程不能将当前的任务放置在一边,转而去做另外一个任务。

单线程的情况:

线程依次执行任务

一个线程,相当于一个人,这个人做完一个任务,再去做下一个任务。

这个人有两个任务,第一个是吃水果,第二个是写文章。
那么这个人是先去吃一堆水果,然后再去写文章。

多线程的情况:

多个线程,每个线程依次处理它的任务

异步编程模型

它和同步的编程模型有很大的区别:
一个线程中执行一堆任务,
这个线程可以自由的保存,恢复任务的状态。
也就是,它有能力穿插的执行任务。

单线程的情况:

一个线程,穿插的执行任务

一个线程,相当于一个人,这个人交替的做任务。

这个人有两个任务,第一个是吃水果,第二个是写文章。
那么这个人是先去吃两个水果,然后再去写文章,过一会再去吃水果,然后再来写文章。

多线程的情况:
几个人互相协作,处理这一堆任务

多个线程,在每个线程中交替的执行任务

异步编程的好处

实用:
利用异步编程,不阻塞当前的ui线程,用户体验很好。
性能:
一个程序的性能是非常重要的,这个不言而喻。
当我们执行耗时任务(读写磁盘,网络请求)的时候,大约70%的时间都浪费在等待结果上面。
利用异步编程,在这浪费的70%的时间内,我们可以愉快的保存当前任务状态,去执行其他任务,等那个任务执行完成,有了结果,我们切换到那个任务的执行上。最大化的利用这个线程。

上一篇 下一篇

猜你喜欢

热点阅读