优秀的编程知识分享平台

网站首页 > 技术文章 正文

C# 锁(lock)语句的使用示例(c# lock unlock)

nanyue 2024-09-11 05:30:29 技术文章 7 ℃

#首发创作赛#

C#中lock语句用于实现线程同步,确保在同一时间只有一个线程可以访问共享资源。lock语句使用一个对象作为锁,并在代码块执行期间锁定该对象,以防止其他线程同时访问。

C# lock语句的使用示例:

using System;
using System.Threading;

class Program
{
    static object lockObj = new object(); // 创建一个用于同步的对象

    static void Main()
    {
        // 创建多个线程来访问共享资源
        for (int i = 0; i < 5; i++)
        {
            Thread thread = new Thread(DoWork);
            thread.Start(i);
        }

        Console.ReadLine();
    }

    static void DoWork(object id)
    {
        Console.WriteLine("线程 {0} 正在尝试获取锁...", id);

        lock (lockObj) // 锁定对象
        {
            Console.WriteLine("线程 {0} 获取到了锁,正在访问共享资源...", id);

            // 模拟对共享资源的访问
            Thread.Sleep(2000);

            Console.WriteLine("线程 {0} 访问共享资源完成,释放锁...", id);
        }
    }
}

示例中创建一个用于同步的对象 lockObj,然后创建多个线程来访问共享资源。每个线程在执行工作之前都会尝试获取 lockObj 对象的锁,如果锁已被其他线程占用,则当前线程将被阻塞。一旦线程获取到锁,它就可以访问共享资源,然后在完成访问后释放锁。

lock语句实际上是对Monitor类的简化使用,它会自动调用Monitor.Enter和Monitor.Exit方法来实现锁定和释放锁的操作。因此,lock语句的使用方式与使用Monitor类的方式非常相似。


Tags:

最近发表
标签列表