当前位置: 首页 > news >正文

C#高级:使用进程锁语法避免线程竞争资源,做到并发控制(Mutex)

一、基础代码

namespace Demo
{class Program{static async Task Main(){int pid = Process.GetCurrentProcess().Id;Console.WriteLine($"这里是进程{pid},尝试获取锁");using (var mutex = new Mutex(false, "MySharedResource")){mutex.WaitOne(); // 获取锁try{// 假设在访问共享资源Console.WriteLine($"这里是进程{pid},已获取到锁");Thread.Sleep(100000);}finally{mutex.ReleaseMutex(); // 释放锁Console.WriteLine($"这里是进程{pid},已释放锁");}}Console.ReadLine();}}
}

二、进程锁原理

        命名Mutex(如MySharedResource)在系统全局唯一,不同进程通过同一名称竞争锁,确保同一时刻仅一个进程可访问共享资源。

三、进程锁查询

1.下载相关工具

下载SysinternalsSuite,我安装在了D:\SysinternalsSuite目录下

介绍 - Sysinternals | Microsoft Learn

2.运行程序

运行C#程序,即上面的基础代码,获取进程锁(命名:MySharedResource)

3.查询

        cmd,管理员身份打开刚刚SysinternalsSuite的安装目录,利用它的handle工具查询Mutex相应的命名(我的程序命名是MySharedResource,你要改成你自己的命名)

D:\SysinternalsSuite>handle -a | findstr /i "MySharedResource"

        主动终止程序后,再次查询,发现查询不到,说明进程锁是有效的,也可以尝试同时运行两个C#程序验证进程锁的有效性。

四、Mutex 和 SemaphoreSlim对比

五、结论

1.Mutex是进程锁,可以通过SysinternalsSuite的handle工具查询相关信息
2.程序崩溃退出或者主动结束程序进程,都可以释放Mutex锁

http://www.dtcms.com/a/593813.html

相关文章:

  • 怎么做才能使网站ip增多网站建设哪些好
  • 龙虎榜——20251110
  • web网页开发,在线%就业信息管理%系统,基于idea,html,layui,java,springboot,mysql。
  • 网站换空间 seo西安做网站程序
  • 专为男人做的网站百度明星搜索量排行榜
  • ZSAR配置CANSM模块
  • STM32外设学习--DMA直接存储器读取--学习笔记。
  • 一本通网站1130:找第一个只出现一次的字符
  • 西安做网站那家好诸城做网站收费
  • 写的网站怎么做接口创造网站软件
  • 上海网站建设团队关于网站建设的投标书
  • 软文广告300字范文广西百度seo
  • AI数据库研究:RAG 架构运行算力需求?
  • cookie和session在客户端与服务端交互过程中的作用
  • 浅谈差分算法--区间变化的上佳策略(C++实现,结合lc经典习题讲解)
  • 重组蛋白包涵体形成原因及解决方案
  • 专注高端网站建设服装网站建设策划书论文
  • 网站设计可以用性原则有哪些做任务的网站
  • 沈阳行业网站wordpress 增加域名
  • ChIP-seq
  • 基于 LangGraph 的对话式 RAG 系统实现:多轮检索与自适应查询优化
  • 一步一步学习使用LiveBindings() LiveBindings与具有动态呈现的TListView
  • 14. PLC的编程语言(图形化语言)
  • 高端网站制作报价鞍山钟点工招聘信息
  • CV论文速递:覆盖视频理解与生成、跨模态与定位、医学与生物视觉、图像数据集等方向(11.03-11.07)
  • 金山办公助力图像图形技术挑战赛,WPS 365自研文档解析算法、表格召回准确率行业领先
  • 数据分析学习路线
  • 电子商务网站建设调查报告学生网页设计主题推荐
  • wordpress全站模板阿里巴巴的关联网站
  • 卫生器具工程量清单计量