using System;
using System.Threading;
class Program
{
private static readonly object lockObject = new object();
private static int counter = 0;
static void Main(string[] args)
{
Thread thread1 = new Thread(IncrementCounter);
Thread thread2 = new Thread(IncrementCounter);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
Console.WriteLine("Final counter value: " + counter);
}
private static void IncrementCounter()
{
for (int i = 0; i < 1000; i++)
{
lock (lockObject)
{
counter++;
}
}
}
}
锁对象 (lockObject):
lock 关键字来确保同一时间只有一个线程可以访问临界区(即对 counter 的操作)。lockObject 是一个静态的 object,用于作为锁的对象。计数器 (counter):
线程 (Thread):
thread1 和 thread2,它们都调用 IncrementCounter 方法来递增 counter。线程启动与等待 (Start 和 Join):
Start 方法启动线程,Join 方法确保主线程等待子线程完成后再继续执行。锁机制 (lock):
IncrementCounter 方法中,使用 lock 确保每次只有一个线程可以进入临界区,从而避免了竞态条件,保证了线程安全。通过这种方式,我们可以确保即使在多线程环境下,counter 的值也能正确地被递增。
上一篇:c# drawstring
下一篇:c#httpclient
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站