编写正确的程序很难,编写正确的并发程序则难上加难。
之所心要编写并发程序,主要是因为线程能使复杂的异步代码变得更简单,从而极大地简化了复杂系统的开发。欲充分发挥多处理器系统的强大计算能力,最简单的方式就是使用线程。
众所周知,早期的计算机不包含操作系统,从头到尾只执行一个程序,并且这个程序能访问计算机中的所有资源。
操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行,操作系统为各个独立执行的进程分配各种资源,包括内存,文件句柄以及安全证书等,如果需要的话,在不同的进程之间可以通过一些粗粒度的通信机制来交接数据,包括:sockets,signal handlers,shared memory,semaphores,and files。
在计算机中加入操作系统来实现多个程序的同时执行,主要是基于:Resource utilization,Fairness,Convenience。
线程的优点:Exploiting multiple processors,Simplicity of modeling,Simplified handling of asynchronous events,More responsive user interfaces。
线程带来的风险:Safety hazards,Liveness hazards,Performance hazards。
线程无处不在哇!