多线程和高并发性
所谓进程,就是包含一些资源的内存区域。操作系统使用进程将其工作划分为功能单元。进程中包含的一个或多个执行单元称为线程。一个进程也有一个私有的虚拟地址空间,只能被它包含的线程访问。一个线程只能属于一个进程,并且只能访问该进程拥有的资源。当操作系统创建一个进程时,该进程会自动申请一个名为primary thread或primary thread的线程。
进程并不真正同时运行,而是并发运行。
一个进程至少有一个线程。线程的划分尺度小于进程的划分尺度,使得多线程程序具有高并发性。另外,进程在执行时有独立的内存单元,多个线程共享内存,大大提高了程序的运行效率。
线程和进程在执行上的区别在于,每个独立的线程都有一个程序运行的入口、一个顺序执行的序列和一个程序的出口。但是线程不能独立执行,所以必须存在于应用中,应用提供多线程执行控制。
从逻辑的角度来看,多线程的意义在于,在一个应用中,有多个执行部分可以同时执行。但是,操作系统并没有将多线程视为多个独立的应用程序来实现进程调度和管理以及资源分配。
“同时”运行多个线程或进程只是一种感官上的表达。事实上,进程和线程是并发运行的。OS的线程调度机制把时间分成许多时间片(时间片),尽可能平均地分配给正在运行的程序。获得CPU时间片的线程或进程被执行,而其他线程或进程等待。CPU在这些进程或线程之间来回切换。微观上,所有的进程和线程都是走走停停的,宏观上,都是在运行的。这种现象称为并发,但不是绝对意义上的“同时”。