码迷,mamicode.com
首页 > 编程语言 > 详细

多线程之间变量锁的实现

时间:2016-05-23 17:06:42      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

在C#中应用多线程时,经常需要给变量进行加锁,来防止程序的混乱。接下来就是对两个线程中的变量进行加锁的小程序。

 1 public partial class Form1 : Form
 2     {
 3         string a = "";
 4         static object locker = new object();
 5         public Form1()
 6         {
 7             InitializeComponent();
 8         }
 9 
10         private void button1_Click(object sender, EventArgs e)
11         {
12             Thread a1 = new Thread(new ThreadStart(change1));
13             a1.IsBackground = true;
14             Thread a2 = new Thread(new ThreadStart(change2));
15             a2.IsBackground = true;
16             a1.Start();
17             a2.Start();
18         }
19         private void change1()
20         {
21             lock (locker)
22             {
23                 a = "1";
24                 Thread.Sleep(5000);
25                 MessageBox.Show(a);
26             }
27         }
28         private void change2()
29         {
30             lock (locker)
31             {
32                 a = "2";
33                 MessageBox.Show(a);
34             }
35         }
36     }

a就是要操作的变量,线程开始前声明了一个变量,object locker准备进行加锁,在change1和change2中给locker进行加锁,使a的值不发生冲突,线程一使a的值为1,线程二使a的值为2,程序的运行效果时,先等5秒,线程一显示1,之后线程二才开始运行,显示2。

多线程之间变量锁的实现

标签:

原文地址:http://www.cnblogs.com/huhu583/p/5520103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!