文章目录
并发编程的目的是为了让程序“同时”执行多个任务。并发编程对计算精密型没有优势,反而由于任务的切换使得效率变低。如果程序是I/O精密型的,比如经常读写文件、访问数据库等,则情况就不同了。由于I/O操作远没有CPU的计算速度快,所以让程序阻塞于I/O操作将浪费大量的CPU时间。如果程序有多个线程,则当前被I/O操作阻塞的线程可主动放弃CPU(或由操作系统来调度),将执行权转给其它线程。这样一来,CPU就可以用来做更加有意义的事情(除非所有线程都同时被I/O操作所阻塞),而不是等待I/O操作完成,因此CPU的利用率显著提升。
从实现上说,并发编程主要有多进程和多线程两种方式。
并发模式是指I/O处理单元和多个逻辑单元之间协调完成任务的方法,服务器主要有两种并发编程模式:半同步 / 半异步(half-sync/half-async)模式和领导者/追随者(Leader/Followers)模式,下面详述。