01 | using System; |
02 | using System.Collections.Generic; |
03 | using System.Linq; |
04 | using System.Text; |
05 | using System.Threading; |
06 |
07 | namespace ConsoleApplication3 |
08 | { |
09 | class Program |
10 | { |
11 | static long Sum=0; |
12 | static object mylock; |
13 | static void Main(string[] args) |
14 | { |
15 | long n = 0; |
16 | long s1 = DateTime.Now.Ticks; |
17 | for (int i = 0; i <= 100; i++) |
18 | { |
19 | n += i; |
20 | Thread.Sleep(10); |
21 | } |
22 | long s2 = DateTime.Now.Ticks; |
23 | Console.Write("----------------单线程运行-------------------\nsum:" + n + "\n\r所花时间(纳秒):" + (s2 - s1)+"\n"); |
24 | Console.Write("----------------双线程运行-------------------\n"); |
25 | Thread t1 = new Thread(add1); |
26 | Thread t2 = new Thread(add2); |
27 | mylock = new object(); |
28 | s1 = DateTime.Now.Ticks; |
29 | t1.Start(); |
30 | t2.Start(); |
31 | t1.Join(); |
32 | t2.Join(); |
33 | s2 = DateTime.Now.Ticks; |
34 | Console.Write("sum:" + n + "\n\r所花时间(纳秒):" + (s2 - s1)); |
35 | Console.ReadKey(); |
36 | } |
37 | static void add1() |
38 | { |
39 | long n = 0; |
40 | for (int i = 0; i <= 50; i++) |
41 | { |
42 | n += i; |
43 | Thread.Sleep(10); |
44 | } |
45 | Monitor.Enter(mylock); |
46 | Sum += n; |
47 | Console.Write("线程一运行完毕,Sum:" + Sum+"\n"); |
48 | Monitor.Exit(mylock); |
49 | |
50 | |
51 | } |
52 | static void add2() |
53 | { |
54 | long n = 0; |
55 | for (int i = 51; i <= 100; i++) |
56 | { |
57 | n += i; |
58 | Thread.Sleep(10); |
59 | } |
60 | Monitor.Enter(mylock); |
61 | Sum += n; |
62 | Console.Write("线程二运行完毕,Sum:" + Sum + "\n"); |
63 | Monitor.Exit(mylock); |
64 | |
65 | } |
66 | } |
67 | } |
C# 多线程示例
本文通过一个具体的示例介绍了如何使用 C# 实现多线程来提高程序的执行效率。示例中,两个线程分别计算一系列数字的累加,并通过锁机制保证了数据的一致性。
4300

被折叠的 条评论
为什么被折叠?



