标签:mes string name 优先 自动 current reads zed proc
进程(process):应用程序的实例要使用的资源的集合。每个进程被赋予了一个虚拟地址空间,确保在一个进程中使用的代码和数据无法由另一个进程访问。
线程(thread):程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,及不同的线程可以执行相同的函数。
多线程编程优缺点,
优点:可以提高CPU利用率。
缺点:1、线程越多占用内存越多;2、多线程需要协调和管理,需要CPU时间跟踪线程;3、线程之间对共享资源会相互影响,必须解决竞用共享资源问题;4、线程太多会导致控制太复杂,可能造成很多BUG
一、Thread多线程编程举例
关键字:前台线程,后台线程,线程优先级,线程休眠,线程阻塞。
1 class MultiThreadingApplication { 2 static void Main(string[] args) { 3 //Thread thread1 = new Thread(new ThreadStart(Test1)); 4 Thread thread1 = new Thread(Test1);//线程传入无参数委托实例 5 //Thread thread2 = new Thread(new ParameterizedThreadStart(Test2));//正常传递 6 Thread thread2 = new Thread(Test2);//简化传递 7 thread1.Name = "线程1"; 8 thread1.IsBackground = true;//设为后台线程,主线成结束后台线程自动结束;前台线程在主线程结束后继续执行才结束 9 thread2.Name = "线程2"; 10 thread1.Start(); 11 thread2.Start("HelloWorld"); 12 Thread thread3 = new Thread(() => 13 { 14 Console.WriteLine("线程3开始"); 15 Console.WriteLine("线程3阻塞5秒钟"); 16 Thread.CurrentThread.Join(TimeSpan.FromSeconds(5)); 17 Console.WriteLine("{0}的执行方法",Thread.CurrentThread.Name); 18 Console.WriteLine("线程3结束"); 19 }); 20 thread3.Name = "线程3"; 21 thread3.Priority = ThreadPriority.Highest;//线程优先级枚举设定,此时最高,在线程池中会优先开始 22 thread3.Start(); 23 Console.WriteLine("Main()主函数线程结束"); 24 } 25 26 static void Test1() { 27 Console.WriteLine("线程1开始"); 28 Console.WriteLine("线程1休眠2秒钟"); 29 Thread.Sleep(2000); 30 Console.WriteLine("{0}调用的无参数方法",Thread.CurrentThread.Name); 31 Console.WriteLine(Thread.CurrentThread.Name+"结束"); 32 } 33 34 static void Test2(object s) { 35 Console.WriteLine("线程2开始"); 36 Console.WriteLine("{0}调用的有参数方法,方法的参数是:{1}", Thread.CurrentThread.Name, s); 37 Console.WriteLine(Thread.CurrentThread.Name + "结束"); 38 } 39 }
标签:mes string name 优先 自动 current reads zed proc
原文地址:https://www.cnblogs.com/mojiejushi/p/13194341.html