很多时候程序并不能这样写
a()
ret = IO()
c(ret )
d()
因为如果IO阻塞了将会影响d的执行,d跟IO没关系。
这时候你会说为什么不把d放a()下面呢?这里代码简单,离得近,
能看出来也方便移动,但是在一个实际的大工程里,是看不出来的,有可能也办不到。
可是有时候如果不等待IO的返回值又没法执行c,
这时候就应该选择异步执行了。
比较通用的办法是把有顺序依赖的动作c当回调函数传给另一个执行
耗时操作的线程,线程执行完这个耗时操作后调用回调函数。
立即返回。另一个线程执行完耗时的操作后调用回调函数
或者把有顺序依赖的动作c当回调函数传给IO(),
IO自己开一个线程执行然后马上返回,线程执行好了就调用c()。
当IO执行完了他自己调用c
a()
ret = IO(c)
d()
网友评论