线程调度宏观并行,微观串行(默认为单核)!
系统中同时存在很多线程,有系统线程,也有自己进程和其它进程的线程,都是由系统统一调度,当某个线程获得CPU时间片后才会真正执行。程序在创建线程后,如果没有执行Sleep、Wait等函数主动放弃时间片(多长时间内不参与时间片竞争),则该线程会继续执行,所以对于单核系统,可以说线程创建后不是立即开始执行的,对于多核系统,则有可能同一进程的多个线程在不同的处理器上同时执行。
个人认为其处理过程如下:
这极其类似于钟表结构(单核):
以CPU为中心,系统有多少个可调度线程,那么它们就是钟表上的一个刻度,当秒针移动到某刻度上,并且做短暂停留时,该刻度(线程)就有执行的机会(如果线程用sleep后,将被cpu视为主动放弃该时间片),由于时间是有限的,当时间片到期后,线程会保存其上下文状态,这时秒针继续向下移动,直到走完一周为止。
Sleep的意思是在CPU分配给某些线程(注意:某些线程是指可调度的线程)一定的时间片后,该线程主动放弃某一数量的时间片,Sleep(0)则为调用线程将释放剩余的时间片,并迫使系统调度另一个线程