C#编程总结(二)多线程基础 - oop.com.cn_面向对象设计网站 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > C# > 正文

C#编程总结(二)多线程基础

来源: www.bianceng.cn 阅读:

无论您是为具有单个处理器的计算机还是为具有多个处理器的计算机进行开发,您都希望应用程序为 用户提供最好的响应性能,即使应用程序当前正在完成其他工作。要使应用程序能够快速响应用户操作 ,同时在用户事件之间或者甚至在用户事件期间利用处理器,最强大的方式之一是使用多线程技术。

多线程:线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工 作,称为多线程。如果某个线程进行一次长延迟操作, 处理器就切换到另一个线程执行。这样,多个线 程的并行(并发)执行隐藏了长延迟,提高了处理器资源利用率,从而提高了整体性能。多线程是为了同 步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率

一、进 程与线程

进程,是操作系统进行资源调度和分配的基本单位。是由进程控制块、程序段、数据段 三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比 如一个线 程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中, 系统首先要做的就是为该程序进程建立一个默认线程,然后程序可 以根据需要自行添加或删除相关的线 程。它是可并发执行的程序。在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单 位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。进程可以划分为运行、阻塞、就绪 三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。

线程(thread), 线程是CPU调度和执行的最小单位。有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流 的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进 程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行 中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建 和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在 运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。

主线程,进程创建时,默认创 建一个线程,这个线程就是主线程。主线程是产生其他子线程的线程,同时,主线程必须是最后一个结 束执行的线程,它完成各种关闭其他子线程的操作。尽管主线程是程序开始时自动创建的,它也可以通 过Thead类对象来控制,通过调用CurrentThread方法获得当前线程的引用

多线程的优势:进程有 独立的地址空间,同一进程内的线程共享进程的地址空间。启动一个线程所花费的空间远远小于启动一 个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

二、多线程优点

1、提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长 时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将 耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。

2、使多CPU系统更 加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。

3、改善程序 结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序 会利于理解和修改。。

多线程尽管优势明显,但是线程并发冲突、同步以及管理跟踪,可能给系 统带来很多不确定性,这些必须引起足够重视。

废话不多说开始我们的多线程之旅。

三 、多线程的应用场合:

简单总结了一下,一般有两种情况:

1)多个线程,完成同类任务 ,提高并发性能

2)一个任务有多个独立的步骤,多个线程并发执行各子任务,提高任务处理效 率

Tags:
相关文章列表: