线程是操作系统调度运行的最小单元。一个程序(一个进程)可以有多个线程同时存在并运行。什么时候,哪个线程被分配到CPU来运行,是操作系统的事情。
如果机子上只有一个CPU,多个线程其实并不是真正同时运行的,只是操作系统调度分配给多个线程不同的CPU时间片,多个线程轮流得到CPU时间片,
给用户的感觉好像是多小线程同时在运行。
如果机子上有多个CPU,那2个线程很有可能真的是同时运行的。
线程被操作系统调度过程中,有2个基本的状态:
1. running (运行)
2. suspended (挂起);线程被挂起的时候,CPU时间片就不会分配到这个线程;
线程可以通过API明确地告诉操作系统,这个线程被挂起;操作系统也可能在背后挂起一个线程
|