|
首先说一下什么是多任务处理操作系统,就是说这个操作系统有能力同时运行多个程序。其实,除非你的机子是多处理机,否则系统只是分配了CUP的时间片到各个正在运行的程序上,让它们看起来似乎是并行的那样。
“多任务处理”分为两种方式:抢占式和合作式(也叫非抢占式)目前主流的操作系统如Unix,Linux,Windows XP, Windows 9x 等,都是抢占式。所谓抢占式就是指:在CUP根据时间片切换各个运行程序的时候,只是根据一定的规则,直接中断当前运行的程序,切换到另一个程序,而不需要之前运行的那个程序主动的提交控制权;老的操作系统,诸如windows 3x,Mac OS 9,或者是需求非常简单的系统,如手机上的操作系统,多为合作式。所谓合作式,就是指只有当前运行的程序提交控制权后,才能被操作系统中断,让另一个程序接过控制权来执行。
将运行的程序进一步细分,就出现了线程这个概念。一个程序在运行过程中可能会有多个指令在同时进行,那么每个指令就是指代一个线程。如果一个程序在运行的时候只有一个线程在执行,那么就是单线程程序。如果有多个线程在同时进行(或者说是在很短的时间内不断切换进行),那么该程序就是多线程程序。
多进程和多线程的区别:每一个进程都包含一些自己的独立的变量,只能该进程自己使用;而多线程往往使用的是同一组变量或数据。相比较起来,线程更轻便,线程间的通讯因为共享了同样的数据集而更便捷和快速。线程的创建和销毁所消耗的额外资源也更少。
多线程的用途:浏览器可以利用多线程机制来同时下载网站上的多幅图片;服务器可以同时应付多个客户请求;图像处理程序,不仅要显示图像,而且要能同时接受客户的命令;甚至java的垃圾处理机制也是运用了多线程(总不能java程序一开始执行垃圾回收,其他的正在运行的java程序就不能运行了吧)。
|