当前位置:嗨网首页>书籍在线阅读

03-多线程技术

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

21.1.1 多线程技术

在谈论线程之前,首先要了解进程。什么是进程?进程为应用程序的运行实例,是应用程序的一次动态执行。

**注意** 当一个程序开始运行时,它就是一个进程。进程包括运行中的程序和程序所使用到的内存和系统资源。

一个进程是由多个线程组成的,线程是程序执行的基本原子单位。线程是“进程”中某个单一顺序的控制流。线程是进程中的一个基本执行流,每个线程都有自己专属的寄存器(程序计数器、栈指针等),代码区共享,不同的线程可以执行同样的函数。

在多线程的进程中,除了主线程外,还可以创建其他线程,其他线程可以与主线程一起并行执行。主线程之外的其他线程称为辅助线程。辅助线程用于执行耗时的任务或时间要求紧迫的任务。实际上,当执行需要较长时间才能完成的连续操作时,或者等待网络或其他 I/O 设备响应时,都可以使用多线程技术。任何一个C#程序都有一个默认的线程,该线程为主线程。主线程执行程序中Main方法中的代码。Main方法中的每一条语句都由主线程执行,当Main方法返回时,主线程也自动终止。

我们现在可以坐在电脑旁边,边操作计算机使用媒体播放器播放mp3,边使用PowerPoint,而这些任务之间丝毫不会相互干扰,这都得益于多线程带来的好处。多线程可以实现并行处理,可以避免某项任务长时间占用CPU时间。需要注意的是,多线程程序对于效率而言,应该根据任务不同的要求来选择。如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时就会消耗CPU资源,这样反而会降低系统的性能。

**技巧** 我们可以用一个比喻来加深理解。假设有一个公司,公司里有很多职员各司其职,我们可以认为这个正常运作的公司就是一个进程,而公司里的职员就是线程。如果这个公司只有一个职员,那么这个职员就需要处理所有的事,效率很显然是高不起来的。