多线程编程简介
一个CPU一次只能执行一个命令,不能执行某处分开的并列的两个命令,因此通过CPU执行的CPU命令行就好比一条无分叉的大道,其执行不会出现分歧。
”一个CPU执行的CPU命令列为一条无分叉路径“即为线程.
现在一个物理的CPU芯片实际上有64个(64核)CPU,如果一个CPU核虚拟为两个CPU核工作,那么一台计算机上使用多个CPU核就是理所应当的事了。尽管如此”一个CPU执行的CPU命令列为一条无分叉路径”仍然不变。
这种无分叉路径不只一条,存在有多条时即为”多线程”。在多线程中,1个CPU核执行多条不同路径上的不同命令。
OS X和IOS的核心XNU内核在发生操作系统时间时(如每隔一定时间,唤起系统调用等情况)会切换执行路径。执行中路径的状态,例如CPU的寄存器等信息保存在各自路径专用的内存块中,从切换目标路径专用的内存块中,复原CPU寄存器等信息,继续执行切换路径的CPU命令列。这被称为”上下文切换”。
由于使用多线程的程序可以在某个线程和其他线程之间反复多次进行上下文切换,因此看上去就好像1个CPU核能够并列地执行多个线程一样。而且在具有多个CPU核的情况下,就不是”看上去像”了,而是真的提供了多个CPU核并行执行多个线程的技术。