现代的操作系统都是多任务系统,支持多个应用程序的同时运行。每个运行于操作系统上的应用程序都是一个进程,进程是指一个应用程序在一个数据集合的一次运行过程。在每个进程内部都可以存在一个或多个线程,这些线程可以同时运行在CPU的多个核心上,同时执行不同的操作,从而提高应用程序的并发处理能力。所以高并发系统设计的一个核心点就是如何利用多线程来实现对请求的并发处理。
由于一个进程内部的多个线程是共享这个进程的相关硬件资源的,所以相对于单线程,多线程的编程复杂度更高,需要考虑多个线程对同一个数据进行并发操作时的数据一致性问题。除此之外,如果多个线程之间存在对资源的相互依赖,也可能导致死锁问题,造成整个系统都卡住不动,无法提供服务。与进程一样,创建一个线程也是存在内存开销的,并且多线程的上下文切换也是存在CPU时间片开销的,所以线程的数量不是越多越好,而是需要结合服务器的内存、CPU等硬件资源来设计一个合理的数量。