c#多线程 使用lock锁

news/2025/2/12 3:19:39/

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

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


http://www.ppmy.cn/news/1427546.html

相关文章

URL地址解析至页面展示全过程(面试详细解答)

目录 1、解析URL 2、缓存判断 ​编辑3、DNS解析 ​编辑4、获取MAC地址 5、TCP三次握手 6、HTTP请求 7、服务器处理请求&#xff0c;返回HTTP响应 8、页面渲染 9、TCP四次挥手 10、浏览器解析HTML 11、浏览器布局渲染 1、解析URL 首先会对 URL 进行解析&#xff0c;…

html5与css3前端学习笔记

一、前端页面开发流程 创建页面项目目录使用Photoshop对效果图切图&#xff0c;切出网页制作中需要的小图片将装饰类图像合并&#xff0c;制作成雪碧图结合Photoshop和代码编辑器&#xff0c;参照效果图&#xff0c;进行html和css代码书写&#xff0c;制作页面 二、CSS权重 …

react 项目路由配置(react-router-dom 版本 v6.3、v6.4)

根据 react-router-dom 的版本&#xff0c;有不同的方式 一、react-router-dom v6.3 用到的主要 api: BrowserRouteruseRoutesOutlet 下面是详细步骤&#xff1a; 1、index.js BrowserRouter 用来实现 单页的客户端路由使用 BrowserRouter 包裹 App放在 顶级 位置&#x…

Golang | Leetcode Golang题解之第41题缺失的第一个正数

题目&#xff1a; 题解&#xff1a; func firstMissingPositive(nums []int) int {n : len(nums)for i : 0; i < n; i {for nums[i] > 0 && nums[i] < n && nums[nums[i]-1] ! nums[i] {nums[nums[i]-1], nums[i] nums[i], nums[nums[i]-1]}}for i …

Linux内核之文件系统访问:目录项、inode、物理磁盘访问关系(五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Python数据可视化:频率统计条形图countplot()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 Python数据可视化&#xff1a; 频率统计条形图 countplot() [太阳]选择题 请问关于以下代码表述正确的选项是&#xff1f; import seaborn as sns import matplotlib.pyplot as plt data { …

2809: 【算法思想】【双指针】寻找target值

题目描述 在一个升序排列的数组里面&#xff0c;找出两个数&#xff0c;使它们的和为target。问有哪几种方案&#xff08;数字都不重复&#xff09; 输入 第一行输入一个数n(n<100000) 第二行输入n个元素的一个升序排列的数组 第三行输入target的值 输出 升序排列的数…

git切换源失败解决方案

git切换源失败解决方案 git切换源git切换源失败(无效) git切换源 git可以使用命令行切换源&#xff0c;一般使用的源有两个地址&#xff0c;git原生地址和淘宝镜像地址&#xff0c;部分公司会使用内部地址。 源切换后&#xff0c;npm i就是从源地址拉取相关依赖了。 原生地址…