C#多线程编程(一)
来源:互联网 发布:淘宝注册商标 编辑:程序博客网 时间:2024/04/29 04:33
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("继续!"); }
- C#多线程编程(一)
- C# Socket多线程编程(一)
- 多线程网络编程(一)C#
- C# Socket多线程编程(一)
- C#多线程(一)
- C#多线程(一)
- C#多线程(一)
- C# 多线程(一)
- C#多线程(一)
- C#多线程(一)
- C#多线程(一)
- 多线程编程(一)
- 多线程编程(一)
- #多线程编程(一)
- 多线程编程(一)
- 多线程编程(一)
- C#多线程编程(转载)
- c# 多线程(一) 多线程的认识
- Struts2学习笔记01----初识struts2配置文件和相关基础知识
- CentOS挂载ntfs文件系统
- Qt 窗体布局
- MYSQL高可用企业案例分享
- 厦门数十家公司的面试经历
- C#多线程编程(一)
- Hough变换_原理_代码_OpenCV
- leetcode Restore IP Addresses
- 转载]android 实现qq聊天对话界面效果
- QT圆角实现
- LoadRunner使用
- php 数组排序以及按照某个字段排序
- POJ 数据结构 第3周 字符串 2:Caesar 密码
- hdoj 1056 HangOver