您的位置:首页 > 其它

实现控件的并发控制

2009-06-17 21:59 148 查看
实现控件的并发控制,首先的先说说多线程开发。

一、多线程的概念。

说线程,那就不的不提进程了。什么是进程呢?每一个应用程序,就是一个进程,它包含了运行时所需要的所有系统资源和内存。 一个进程由多个线程组成,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,也就是说不同的线程可以执行同样的函数。

多线程是指程序中包含多个执行流,也就是说可以用多个不同线程去执行 不同的任务,程序中允许创建多个并行执行的线程来完成各自的任务。很多书上都举例浏览器这个例子来说明多线程:在浏览器中你可以再下载东西时,或图像的同时滚动页面,在访问新的页面时,播放动画和声音,打印文件等。

其实所谓的多线程,并不是cpu同时执行多个任务,cpu在同一时刻只执行一个任务,多线程的好处在与提高cpu的利用率。同时大大的提高了程序的效率。然而,我们还是需要认识到多线程的一些不利方面:

1、线程也是程序,所以线程需要占用内存,线程越多占用内存也就越多,一般小的程序感觉不到,内存缺乏的感受,个人认为,线程并不是越多越好,够用就行

2、多线程间是需要协调管理的,要控制好什么时候让其沉睡,什么时候唤醒它,让它工作,这就需要我们去很好的控制它,需要设个cpu时间跟踪线程

3、同时线程之间对共享资源的访问会相互影响,必须解决线程间竞争资源的问题,最好设个优先级

4、能少用尽量少用,因为很难控制

下面是多线程的小例子:

using System;
using System.Threading;

namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Thread thread1 = new Thread(new ThreadStart(Method1));
Thread thread2 = new Thread(new ThreadStart(Method2));
thread1.Start();
thread2.Start();

}
public static void Method1()
{
while(true)
{
Console.WriteLine("this is thread : 1");
Thread.Sleep(1000);

}

}
public static void Method2()
{
while (true)
{
Console.WriteLine("this is thread : 2");
Thread.Sleep(2000);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: