c#多线程 使用lock锁

使用 lock 关键字可以确保在同一时刻只有一个线程可以访问被锁定的代码块,从而避免线程资源竞争。以下是修改后的示例代码:

csharp 复制代码
using System;
using System.Threading;

class Program
{
    static int sharedNumber = 0;
    static int iterations = 1000000;
    static object lockObject = new object();

    static void Main(string[] args)
    {
        Thread thread1 = new Thread(Increment);
        Thread thread2 = new Thread(Increment);

        thread1.Start();
        thread2.Start();
        //等待线程执行完毕(不加join结果可能会不一样)
        thread1.Join();
        thread2.Join();

        Console.WriteLine("Final shared number: " + sharedNumber);
    }

    static void Increment()
    {
        for (int i = 0; i < iterations; i++)
        {
            lock (lockObject)
            {
                sharedNumber++;
            }
        }
    }
}

在这个示例中,我们使用 lock 关键字来锁定对 sharedNumber 的访问。这样,只有一个线程可以同时访问 sharedNumber,从而避免了线程资源竞争,确保了正确的递增操作。

相关推荐
xb11328 分钟前
C#串口通信
开发语言·c#
周杰伦fans14 分钟前
CAD二次开发中的线程、异步操作与LockDocument
c#
绿浪19841 小时前
C#与C++高效互操作指南
c++·c#
jghhh011 小时前
基于C#的CAN总线BMS上位机开发方案
开发语言·c#
MyBFuture2 小时前
编程实战:相机连接与参数设置指南
windows·c#·visual studio·vision pro·联合编程
kylezhao20192 小时前
深入浅出理解 C# WPF 的事件
开发语言·c#·wpf
Byte不洛2 小时前
POSIX 信号量:基于环形队列的生产者消费者模型
linux·多线程·并发编程·生产者消费者模型·posix信号量
我要打打代码2 小时前
C# 各种类库
开发语言·c#
一刻钟.15 小时前
C#高级语法之线程与任务
开发语言·c#
weixin_3077791316 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算