C#多线程编程(一)

1.C#支持通过多线程实现并行代码的执行。每一个线程就是一个独立的可执行程序,他可以独立的与其他线程同时执行。多线程编程就可以实现在一个应用程序中使多个任务并列执行。

一、多线程编程:

1.一个C#程序起始于一个由CLR和操作系统创建的单线程(Main线程),并且可以通过创建其他线程来实现多线程编程;

2.一个线程被挂起或等待时,并不消耗CPU资源;

3.一个进程可以理解为就是一个应用程序,一个进程下面可以包含多个线程。进程是完全独立于其他进程的,而线程则与同一应用中的其他线程共享存储区,也就是说,线程间可以对临界资源进行共享;

4.一个C#应用程序可以通过两种方式变为多线程应用程序:其一,明确的创建并且运行附加线程;其二,通过.NET Framework的特性来创建线程,如:线程池,Remoting服务器,ASP.NET应用程序等,这些例子中,均会自动包含多线程编程;

5.一个线程一旦结束,将不能再启动;

6.可以在任意时刻设置线程名字,但是如果名字设置之后在试图改变他,将会抛出一个异常;

7.Join方法:使线程处于等待状态,直到该线程结束或被其他线程打断;

8.一个线程段可以通过线程中断和线程取消两种方法提前释放,这两种方法都必须通过另外一个活动的线程来引发,因为一个等待的线程在处于阻塞的状态时是不能进行任何操作的。中断一个线程只是让他从等待状态中释放出来,并不会使线程结束,除非在中断时没有捕获异常;

9.线程生命周期所处状态图:

一、线程的等待处理:

1.EventWaitHandle提供了两个基类:AutoResetEvent和ManualResetEvent,他们都是从他们的基类(EventWaitHandle)获得全部的功能。唯一的不同是他们的构造函数的参数不同。

        static EventWaitHandle wait = new AutoResetEvent(false);
        static EventWaitHandle wariHandle = new ManualResetEvent(false);

        static void Main(string[] args)
        {
            Thread thread = new Thread(Waiter);
            thread.Start();
            Thread.Sleep(5000);
            wariHandle.Set();
            //wait.Set();

            Console.Read();
        }

        private static void Waiter()
        {
            Console.WriteLine("等待!"); 
            wariHandle.WaitOne();            
            /wait.WaitOne();            
            Console.WriteLine("继续!"); 
        }


 

 

 

以上这个方法会在打印出“等待!”5秒之后再打印出“继续!”。使用AutoResetEvent或ManualResetEvent都是一样的。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值