多線程之間變量鎖的實現


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM