全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#多线程中如何运用互斥锁Mutex

互斥锁(Mutex)

互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。

互斥锁可适用于一个共享资源每次只能被一个线程访问的情况

 函数:

//创建一个处于未获取状态的互斥锁
Public Mutex();
//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态
Public Mutex(bool owned);

 如果要获取一个互斥锁。应调用互斥锁上的WaitOne()方法,该方法继承于Thread.WaitHandle类

它处于等到状态直至所调用互斥锁可以被获取,因此该方法将组织住主调线程直到指定的互斥锁可用,如果不需要拥有互斥锁,用ReleaseMutex方法释放,从而使互斥锁可以被另外一个线程所获取。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Threading;
 
namespace MyTTCon
{
 class shareRes
 {
  public static int count = 0;
  public static Mutex mutex = new Mutex();
 }
 
 class IncThread
 {
  int number;
  public Thread thrd;
  public IncThread(string name, int n)
  {
   thrd = new Thread(this.run);
   number = n;
   thrd.Name = name;
   thrd.Start();
  }
  void run()
  {
   Console.WriteLine(thrd.Name + "正在等待 the mutex");
   //申请
   shareRes.mutex.WaitOne();
   Console.WriteLine(thrd.Name + "申请到 the mutex");
   do
   {
    Thread.Sleep(1000);
    shareRes.count++;
    Console.WriteLine("In " + thrd.Name + "ShareRes.count is " + shareRes.count);
    number--;
   } while (number > 0);
   Console.WriteLine(thrd.Name + "释放 the nmutex");
   // 释放
   shareRes.mutex.ReleaseMutex();
  }
 }
 class DecThread
 {
  int number;
  public Thread thrd;
  public DecThread(string name, int n)
  {
   thrd = new Thread(this.run);
   number = n;
   thrd.Name = name;
   thrd.Start();
  }
  void run()
  {
   Console.WriteLine(thrd.Name + "正在等待 the mutex");
   //申请
   shareRes.mutex.WaitOne();
   Console.WriteLine(thrd.Name + "申请到 the mutex");
   do
   {
    Thread.Sleep(1000);
    shareRes.count--;
    Console.WriteLine("In " + thrd.Name + "ShareRes.count is " + shareRes.count);
    number--;
   } while (number > 0);
   Console.WriteLine(thrd.Name + "释放 the nmutex");
   // 释放
   shareRes.mutex.ReleaseMutex();
  }
 }
 
 class Program
 {
  static void Main(string[] args)
  {
   IncThread mthrd1 = new IncThread("IncThread thread ", 5);
   DecThread mthrd2 = new DecThread("DecThread thread ", 5);
   mthrd1.thrd.Join();
   mthrd2.thrd.Join();
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # 多线程  # 互斥锁  # Mutex  # C#多线程中的互斥锁Mutex  # C#多线程死锁介绍与案例代码  # C#在复杂多线程环境下使用读写锁同步写入文件  # C#使用读写锁解决多线程并发问题  # C#多线程系列之读写锁  # C#多线程系列之多线程锁lock和Monitor  # c#多线程之间的排他锁的实现  # C#笔试题之同线程Lock语句递归不会死锁  # C#使用读写锁三行代码简单解决多线程并发的问题  # C#多线程编程中的锁系统(四):自旋锁  # C#多线程编程中的锁系统(三)  # C#多线程编程中的锁系统(二)  # C#多线程编程中的锁系统基本用法  # C#多线程之线程锁  # 互斥  # 是一个  # 不需要  # 正在等待  # 适用于  # 另外一个  # 创建一个  # 大家多多  # 有一个  # 从而使  # Thread  # WaitHandle  # ReleaseMutex  # Linq  # Text  # Threading  # System  # Collections  # Generic  # pre 


相关文章: 建站10G流量真的够用吗?如何应对访问高峰?  建站三合一如何选?哪家性价比更高?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何用AWS免费套餐快速搭建高效网站?  如何用狗爹虚拟主机快速搭建网站?  如何做网站制作流程,*游戏网站怎么搭建?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  制作网站怎么制作,*游戏网站怎么搭建?  寿县云建站:智能SEO优化与多行业模板快速上线指南  制作公司内部网站有哪些,内网如何建网站?  如何快速上传建站程序避免常见错误?  建站为何优先选择香港服务器?  广东企业建站网站优化与SEO营销核心策略指南  建站主机选哪家性价比最高?  如何在腾讯云服务器快速搭建个人网站?  如何通过商城免费建站系统源码自定义网站主题?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  建站之星代理费用多少?最新价格详情介绍  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  高防服务器如何保障网站安全无虞?  长沙企业网站制作哪家好,长沙水业集团官方网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  建站之星会员如何解锁更多建站功能?  英语简历制作免费网站推荐,如何将简历翻译成英文?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  家庭服务器如何搭建个人网站?  如何做静态网页,sublimetext3.0制作静态网页?  建站主机类型有哪些?如何正确选型  网站制作公司排行榜,抖音怎样做个人官方网站  如何通过商城自助建站源码实现零基础高效建站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  教学论文网站制作软件有哪些,写论文用什么软件 ?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  沈阳制作网站公司排名,沈阳装饰协会官方网站?  b2c电商网站制作流程,b2c水平综合的电商平台?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  重庆网站制作公司哪家好,重庆中考招生办官方网站?  南平网站制作公司,2025年南平市事业单位报名时间?  PHP正则匹配日期和时间(时间戳转换)的实例代码  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何破解联通资金短缺导致的基站建设难题?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何快速生成高效建站系统源代码?  建站之星如何快速生成多端适配网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  大连网站制作公司哪家好一点,大连买房网站哪个好?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。