串行、并行、耦合、关系
串行与并行在各个层次
在硬件级:CPU低并行,GPU高并行
在指令级:编译时指令的并行优化,指令流水线
在源码级:代码解耦
在设计模式级:功能解耦
并行与并发
并发是串行指令在一个极小时间片内执行,不能认为这些指令在这个极小时间片内并行执行
异步与同步
异步就是不需要同步
同步是指:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。 异步是指:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。
同步中程序2需要等待程序1的执行,程序1又需要等待程序2的执行
异步中程序2需要等待程序1的执行,但程序1不需要等待程序2的执行
这都是串行执行。两程序有执行顺序上的依赖关系。
并行就是程序2不需要等待程序1的执行,程序1也不需要等待程序2的执行。两者没有执行顺序上的依赖关系。
耦合
耦合本来的意思是两个东西之间的联系,解耦本来的意思是切断两者之间的联系。就像藕断开了之后会有很多丝一样,解耦就是把藕断开,并一步步拉断的过程。
程序解耦的意思是使其能并行处理;程序耦合的意思是不能并行处理,有拓扑关系,只能串行处理。
代码解耦的意思是让代码的直接联系转变为间接联系。
回调函数
使用回调函数的意思就是把b函数中执行a函数这句话拿到c函数中去。我们可以只在c函数里写代码就能实现b中调a的功能,这样,只阅读c函数就知道b函数调用了a函数,更进一步,b和a的联系只阅读c就知道了。这样,b和a通过c进行了联系,b和a之间的直接联系就被切断了,但是b和a之间还有间接联系。
这种方式只是代码解耦,而不是程序解耦。