C# 多线程编程及其几种方式
2021-05-04 22:29
标签:mes string name 优先 自动 current reads zed proc 进程(process):应用程序的实例要使用的资源的集合。每个进程被赋予了一个虚拟地址空间,确保在一个进程中使用的代码和数据无法由另一个进程访问。 线程(thread):程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,及不同的线程可以执行相同的函数。 多线程编程优缺点, 优点:可以提高CPU利用率。 缺点:1、线程越多占用内存越多;2、多线程需要协调和管理,需要CPU时间跟踪线程;3、线程之间对共享资源会相互影响,必须解决竞用共享资源问题;4、线程太多会导致控制太复杂,可能造成很多BUG 一、Thread多线程编程举例 关键字:前台线程,后台线程,线程优先级,线程休眠,线程阻塞。 C# 多线程编程及其几种方式 标签:mes string name 优先 自动 current reads zed proc 原文地址:https://www.cnblogs.com/mojiejushi/p/13194341.html 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 }