C#线程
来源:互联网 发布:ipad商标侵权案 知乎 编辑:程序博客网 时间:2024/06/07 06:16
一、 进程,进程是表示资源分配的基本单位,又是调度运行的基本单位。一个进程中至少包含一个线程。
线程,线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。线程可以利用进程所拥有的资源。
多线程,打开qq音乐,同时听歌,看mv,下载。
多进程,同时运行qq音乐,网易云音乐,酷我音乐...
二、 在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销相对较小,能高效地提高系统多个程序间并发执行的程度。
三、 在C#中,可以使用多线程并行的执行代码,每个线程都有独立的执行路径,能够与其他的线程同时运行。
一个C#程序始于一个单线程,这个单线程被CLR和操作系统(“主线程”)自动创建,并具有多线程创建额外的线程。
四、 Demo
using System;using System.Threading; //引入命名空间namespace ConsoleApplication1{ class ThreadTest { static bool done; static object locker = new object(); static void Main(string[] args) { //三种实例化方法 Thread go = new Thread(Go); //线程1 调用Go方法 //Thread go = new Thread(new ThreadStart(Go)); //用委托指定线程从哪里执行 //Thread go = new Thread(delegate () { Console.WriteLine("方法"); }); //用匿名方法启动线程 Thread ro = new Thread(Ro); //线程2 调用Ro方法 Thread go_1 = new Thread(Go); //线程3 同样调用Go方法 go.Start(); //开启线程1 go_1.Start(); //开启线程3 go.Join(); //等待当前线程结束方可执行下个线程 if (!(go_1.IsAlive)) //IsAlive返回当前线程状态,Start()到结束为true,反之false { ro.Start(); //开启线程2 Go(); } } static void Go() { lock (locker) //加锁 { if (!done) { done = true; for (int i = 0; i < 5; i++) { Thread.Sleep(1000); Console.WriteLine("Done"); } } } } static void Ro() { Console.WriteLine("Rooo"); } }}
阅读全文
0 0
- c#线程
- c#线程
- c#线程
- c#线程
- C#线程
- C#线程
- C#线程
- c#线程
- C#线程
- C#线程
- C# 线程
- c# 线程
- C# 线程
- C#线程
- c# 线程
- C#线程
- C#线程
- C# 线程
- 数的读法
- java常见异常
- Jq日期比较大小
- main函数传参
- Catch That Cow
- C#线程
- 注释ASPX文件内容
- HttpClient源码解析系列:第二篇:极简版实现
- http协议的get和post方法的区别
- Spring_Spring + Apache Curator 实现分布式应用单节点执行Job
- HDU 1754 I Hate It (线段树+单点更新+区间询问)
- HDU4509 湫湫系列故事——减肥记II【格式输入+存储设置+暴力+水题】
- PAT 1023. 组个最小数 (20)
- C#-dictionary用法