Win32多线程程序设计(序)

前言:

程序是乏味的代言人,程序世界是如此的单调,上帝说,让世界变的精彩,从此有了多线程程序设计

从第一台计算机出现开始,顺序程序设计就开始深入人心,将任务划分为一个流程,交给计算机去做,一切都那么理所当然,程序世界就像一个黑白的世界,井然有序却又单调乏味,多线程多任务程序设计理念的提出,让程序世界开始变的五彩缤纷,精彩却也引入了很多可能导致混乱的因素。

多线程程序设计是一个设计技巧而不是一个编程技巧,是和单线程顺序程序设计并列的两个分支,多线程多任务使程序的效率得以高度发挥

1)      改善用户对软件操作的感受

2)      使同一时间的一台服务器上提供对成百上千用户的支持

用户只是知晓其效果,而我们程序员要思考的是如何设计一个程序才能达到这样的效果,多线程是提供给我们得以达到此目的的法宝

多线程,使程序得以将其工作分开,独立运作,不互相影响

1.合作式多任务和抢先式多任务

1)      合作式多任务系统

Windows前三个版本是一个基于合作式多任务的操作系统,合作式多任务需要从两方面进行理解

  a)       多任务

  多任务是指系统允许同时执行多个程序,这对单任务系统来说是一个大的飞跃

  b)      合作式

  当同时执行多个任务时,多个任务之间需要分享CPU,合作式是指分享CPU的责任是程序的责任而不是操作系统的责任,这样程序就有权拒绝与其他程序分享CPU,进一步    来说,合作式多任务系统中多个任务之间如何分享CPU是程序员的责任,程序员需要在设计程序之初就要考虑如何分配CPU的控制权,稍有不慎就有可能导致某一个程序得不到执行的机会。

2)      抢先式多任务系统

从Windows NT开始,Windows系统开始是一个基于抢先式多任务的操作系统,我们抢先式多任务系统也从两个方面进行讨论

  a)       多任务

  同上

  b)      抢先式

  抢先式的意思是操作系统负责CPU使用权的分配,强迫应用程序把CPU分享给其他人,并在任务切换时承担"切换任务时所需的状态存储和恢复"的责任,程序员不负责CPU的分配,这样程序员就不用绞尽脑汁思考如何在多个任务中分配CPU的控制权了

注:

抢先式多任务 多线程如此的重要,是Windows 4.0开始的标志,以后每次版本的更新,这两个的地位从此不可动摇。

2.为什么多线程在程序设计中是如此的重要

1)      服务器程序需要用多线程设计

毋庸置疑

2)      用户程序设计需要用多线程程序设计

当用户程序连接到一个忙碌的服务器时,用户程序只能悬在那里一动不动直到服务器完成所有操作,程序员无法改善这个局面,因为控制权在服务器那端,但如果用户程序有多个线程,那么当一个线程必须停下来等待与服务器连接时,其他线程还可以继续动作,如UI线程可以持续有反应(一个永远有反应的UI是极其重要的)

posted @ 2012-11-10 10:15  liuhao2638  阅读(268)  评论(0编辑  收藏  举报