同步和异步为程序架构的顶层概念

最快的并行,应该是减少等待或无效操作,以及充分利用电脑的性能!

在减少等待这个阻点,我们使用到最多的是异步设计了。关于异步设计,在这几年的工作中,也遇到一些编程麻烦,就是与同步和异步问题悉悉相关!

如果程序或模块在最开始被设计为同步的,而在后期随着数据量和并发数的增多,程序遭遇到线程耗尽问题。问题分析清楚后,想减少线程阻塞,需要把程序变更为异步特性。在这个时间,您往往会发现在需要被处理异步的阻点上,真实中的代码实在是嵌套太深了。。。。。。异步处理恢复运行时所需要的状态数据,已经比较难以保存了,很难做异步了!

所以,总结来看,编程中的同步和异步问题,在关于流程和程序结构上,往往是决定性;是需要在最初设计就应该被考虑到的顶层概念,不然后期就积重难返了!

同时,也就在前一段时间,和一个大牛在讨论某问题的时候,他给我给反问一个问题:为什么某某个网元可以处理地很快呢? 关于这个问题,在工作的几年里,熟视无睹,也还真没有深入想过。在思考了一段时间,就意识到,它处理的很快,在除去硬件架构的优势外,其实就是基于异步设计出来的效果。它在软件架构上为内存逻辑地址平坦的JOB调度机制,避免上下文切换所带来的损耗,而在具体运行中就是大量逻辑处理、访存操作和在异步流程的边缘进行的Socket数据发送操作。Socket发送操作几乎是它运行时最大的时间等待了!再从稍微高一点的理论层来看,它的运转机制,几乎上已经是一个与网络通信相关的图灵机,最快的处理速度了!

对此问题再深入细想下来,这几年的网络通信编程经历中,涉及到的流程、状态机、定时器,只是异步编程具体化后的形现,常用、且重要:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章