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,从而避免了线程资源竞争,确保了正确的递增操作。

相关推荐
不穿格子的程序员8 分钟前
Redis篇9——Redis深度剖析:
数据库·redis·多线程·事务回滚·ap·cp
先生沉默先15 分钟前
c#Socket学习,使用Socket创建一个在线聊天,需求分析与创建项目,数据结构创建(1)
数据结构·学习·c#
CodeCraft Studio27 分钟前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建气泡图
信息可视化·c#·excel·aspose·excel api库·excel气泡图·excel组件库
秦苒&1 小时前
【C语言指针五】转移表、回调函数、qsort、qsort函数的模拟实现
c语言·开发语言·c#
helloworddm1 小时前
GetDirectoryReference 远程代理创建机制详解
服务器·架构·c#
缺点内向1 小时前
C#:轻松实现Excel到TXT的转换
后端·c#·.net·excel
张人玉1 小时前
C# WPF 折线图制作笔记(LiveCharts 库)
笔记·c#·wpf·折线图·linechart
bugcome_com2 小时前
深入浅出 C# 中的 static 关键字——理解静态与实例的核心差异
c#·.net
唐青枫3 小时前
一篇搞定 dotnet ef:EF Core 常用命令与实战指南
c#·.net
烛阴11 小时前
C# 正则表达式(2):Regex 基础语法与常用 API 全解析
前端·正则表达式·c#