一、线程背景
1、进程问题
早期操作系统仅仅支持进程,而不支持线程;如果一个产品功能包含了很多的异步事件,软件设计会带来麻烦
首先:考虑使用一个进程完成产品设计
一个进程循环分成几个步骤分别为不同的事件服务,相当于将多个事件处理串行化。
这样做的缺点是对于事件的处理可能不及时,又或者某些事件处理可能会阻塞CPU弱化性能…等等
其次:考虑使用多个进程完成产品设计
每个进程分别服务于不同的异步事件,可以解决异步事件处理不及时或者阻塞CPU的问题。
这样做还是有缺陷的,进程写时复制技术对于内存资源COPY另外一份,对于软件设计是不必要的,它降低了资源效率以及性能。另外设计者可能需要一个进程单独维护各个事件服务进程的工作状态,这就涉及到相对复杂的进程间通信
二、线程基础
1、线程模型
线程模型保证同时执行多个过程之外,多个过程之间使用同一个地址空间(意味着数据共享,方便解决资源拷贝以及线程通信问题)
2、线程问题
线程工作在同一个地址空间,应当注意线程访问共享资源时的同步问题