多线程之间变量锁的实现

Posted huhu583

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程之间变量锁的实现相关的知识,希望对你有一定的参考价值。

在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。

以上是关于多线程之间变量锁的实现的主要内容,如果未能解决你的问题,请参考以下文章

一种多线程变量区域锁的实现方法

分布式锁的作用及实现

详解锁,分布式锁的几种实现方式

002-多线程-锁-同步锁-synchronized几种加锁方式Java对象头和MonitorMutex LockJDK1.6对synchronized锁的优化实现

无锁编程

Redis 分布式锁的作用及实现(序列四)