异步并发程序的技术选择

异步,是相对于同步(顺序)而言的。并发,是相对于单一而言的。

异步执行,而不是同步阻塞。比如程序需要去读写文件,然后再执行一个不相关的任务。我们可以改造这个程序,把读写文件的操作变成异步的,不等它执行,就去执行下一个不相关的任务。再在程序结束前等待异步读写文件的步骤完成。这种方法,能缩短这个程序的响应时间。这种改造,适合响应实时性要求高的程序。值得注意的是,这种方法并不意味着并发多任务。如果异步执行的是IO,通常意味着异步IO库的支持;如果异步执行的是其他的本地耗时代码,则通常意味着使用使用一个线程池,此时就属于并发执行了。

操作系统创建进程、线程,都是相对耗时的操作。因此,现代语言大部分都提供了线程池,复用这些内核对象。这是进行并发程序设计时需要注意的。

程序并发执行时,如果访问共享的资源,则需要保证合理的访问顺序,从而获得预期的执行结果。锁定、互斥,是常用的控制方法。

并发执行的程序步骤,我们时常会遇到任务之间存在依赖的情况。任务之间的等待管理也是程序设计中常遇到的问题。早期经常使用 callback。近来来经常使用 Future Promise 来将互相依赖的并行任务串起来。而 …

Continue Reading

常见的标准化组织

国际标准 ISO, International Organization for Standardization, www.iso.org. 我们常见的ISO标准有 "ISO 9001 质量管理, ISO 9001:2015", "ISO/IEC 27001 信息安全管理"。在学习计算机网络时,我们会遇到的一个经典的网络模型OSI就是一个ISO标准 "ISO/IEC 7498-1"。而我们常见的编程语言C也是有ISO标准的,而且每五年更新一次:”ISO/IEC 9899:2011, ISO/IEC 9899:2011/Cor 1:2012, ISO/IEC 9899:2018"。

另一个国际标准,IEC,国际电子技术委员会,制定了一系列的电子技术等相关的标准。命名为 ISO/IEC 是ISO与IEC合作的标准 …

Continue Reading