千家信息网

C#多线程中的互斥锁Mutex怎么用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"C#多线程中的互斥锁Mutex怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#多线程中的互斥锁Mutex怎么用"吧!一、简介Mu
千家信息网最后更新 2026年11月02日C#多线程中的互斥锁Mutex怎么用

本篇内容主要讲解"C#多线程中的互斥锁Mutex怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C#多线程中的互斥锁Mutex怎么用"吧!

一、简介

Mutex的突出特点是可以跨应用程序域边界对资源进行独占访问,即可以用于同步不同进程中的线程,这种功能当然这是以牺牲更多的系统资源为代价的。

主要常用的两个方法:

  • public virtual bool WaitOne() 阻止当前线程,直到当前 System.Threading.WaitHandle 收到信号获取互斥锁。

  • public void ReleaseMutex() 释放 System.Threading.Mutex 一次。

二、代码

案例一:

    class Program    {        private static Mutex mutex = new Mutex();        static void Main(string[] args)        {            Thread[] thread = new Thread[3];            for (int i = 0; i < 3; i++)            {                thread[i] = new Thread(ThreadMethod1);//方法引用                thread[i].Name = "Thread-" + (i+1).ToString();            }            for (int i = 0; i < 3; i++)            {                thread[i].Start();            }            Console.ReadKey();        }        public static void ThreadMethod1(object val)        {                       mutex.WaitOne();    //获取锁            for (int i = 1; i <=5; i++)            {                Console.WriteLine("{0}循環了{1}次", Thread.CurrentThread.Name, i);            }            mutex.ReleaseMutex();  //释放锁        }    }

运行结果:

案例二:

    class Program    {        private static Mutex mutex = new Mutex();        private static int sum = 0;        static void Main(string[] args)        {            Task task = new Task(ThreadFunction);            task.Start();            Console.WriteLine($"{DateTime.Now} task started!");            Thread.Sleep(2000);//Main主線程            Console.WriteLine($"{DateTime.Now} Get siginal in Main!");            mutex.WaitOne();            Console.WriteLine($"{DateTime.Now} Get siginal in main!");            Console.WriteLine($"{DateTime.Now} Result is {task.Result}");            Console.ReadKey();        }        private static int ThreadFunction()        {            Console.WriteLine($"{DateTime.Now} Get siginal in ThreadFunction!");            mutex.WaitOne();  //获取锁            for (int i = 0; i <= 10; i++)            {                sum += i;                Thread.Sleep(1000);            }            Console.WriteLine($"{DateTime.Now} Release mutex in ThreadFunction!");            mutex.ReleaseMutex();  //释放锁            return sum;        }    }

运行结果:

到此,相信大家对"C#多线程中的互斥锁Mutex怎么用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

线程 C# 方法 内容 更多 案例 结果 资源 学习 运行 不同 实用 更深 两个 代价 代码 信号 兴趣 功能 实用性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网属科技 与互联网科技公司 互联网金融公司科技 互联网科技上市公司 互联网高科技股票 科技互联网创业计划书 湖南洣水互联网科技有限公司扣款 须眉科技是互联网公司吗 北京大学互联网科技怎么样 创业天下互联网科技有限公司 互联网科技与管理 互联网对科技的发展 中国航天科技大学国际工业互联网 互联网科技公司有风险吗 注册互联网科技公司经营范围大全 国大互联网教育科技有限公司工作 萌小萌互联网科技河南有限公司 马化腾互联网科技教学 好易买互联网科技 颐高云石互联网科技 南京欣网互联网科技 奇士达互联网科技 互联网时代科技改变生活 辽宁互联网新科技 深圳市罗太互联网科技有限公司 特约风豹互联网科技为什么扣费 济南有互联网科技公司吗 广州百诚互联网科技有限公司官网 张召忠谈中国互联网科技 第三届互联网大会安防黑科技
0