C# 怎么锁住线程
在 C# 中可以使用 lock
关键字来锁住线程。具体做法如下:
object lockObject = new object();
// 在需要锁住线程的地方使用 lock 关键字
lock (lockObject)
{
// 需要保护的代码块
}
在上面的代码中,我们首先创建了一个 lockObject
对象作为锁对象。然后在需要保护的代码块前使用 lock (lockObject)
来锁住线程。这样就可以确保只有一个线程可以同时访问被锁定的代码块,从而避免多个线程同时访问造成的竞争条件。
C# 锁线程的代码示例
下面是一个简单的示例,演示如何在 C# 中使用 lock
来锁住线程:
using System;
using System.Threading;
class Program
{
static object lockObject = new object();
static void Main()
{
Thread t1 = new Thread(DoWork);
Thread t2 = new Thread(DoWork);
t1.Start();
t2.Start();
t1.Join();
t2.Join();
Console.WriteLine("All threads finished.");
}
static void DoWork()
{
lock (lockObject)
{
Console.WriteLine(Thread.CurrentThread.Name + " is starting work...");
Thread.Sleep(2000); // 模拟一些工作
Console.WriteLine(Thread.CurrentThread.Name + " finished work.");
}
}
}
在上面的示例中,我们创建了两个线程 t1
和 t2
,它们都会执行 DoWork
方法。在 DoWork
方法中,我们使用 lock (lockObject)
来锁住线程,确保只有一个线程可以同时执行 DoWork
方法中的代码块。这样可以避免多个线程同时访问造成的问题。最后,我们使用 Join
方法等待两个线程执行完毕,并输出 "All threads finished."。