首页 > 编程语言 >C# lock,monitor,enter,tryenter,lockTaken

C# lock,monitor,enter,tryenter,lockTaken

时间:2024-03-09 17:33:05浏览次数:27  
标签:lockTaken monitor C# lock locker static val2 Monitor

 class ThreadSafe
 {
     static readonly object _locker = new object();
     static int _val1 = 1, _val2 = 1;

     static void Go()
     {
         lock(_locker)
         {
             if(_val2!=0)
             {
                 Console.WriteLine(_val1 / _val2);
             }
             _val2 = 0;
         }
     }

     static void MonitorEnterExit()
     {
         Monitor.Enter(_locker);
         try
         {
             if(_val2!=0)
             {
                 Console.WriteLine(_val1 / _val2);
             }
             _val2 = 2;
         }
         finally
         {
             Monitor.Exit(_locker);
         }
     }

     bool lockTaken = false;
     void MonitorEnterRefLockTaken()
     {
         try
         {
             Monitor.Enter(_locker, ref lockTaken);
         }
        finally
         {
             if(lockTaken)
             {
                 Monitor.Exit(_locker);
             }
         }
     }

     void MonitorTryEnterLockTaken()
     {
         Monitor.TryEnter(_locker,1000,ref lockTaken);
         Monitor.Exit(_locker);
     }
 }

  

 

The lock is sugar syntact of Monitor,Enter,TryEnter,with timespan and lockTaken,then Monitor.Exit();

标签:lockTaken,monitor,C#,lock,locker,static,val2,Monitor
From: https://www.cnblogs.com/Fred1987/p/18063020

相关文章

  • [c++] c++ 中的左右值
    c++中的左右值前言:最近又需要再次复习一下关于c++中lvaue和rvalue相关的知识。左值和右值简单看inta=1;这条语句,对于左边的a,我们是可以对其取地址的,而对于右边的1来说,我们无法对其去地址。对于能够取地址的a,位于=左边,我们就将其称之为左值,对于像1这样的......
  • 【软件安装】pytorch安装(windows10,pip版)
    前提必须先安装cuda与cudnn,教程:cuda与cudnn部署安装同时确认你的CUDA版本,nvidia-smi:确认版本是12.4,继续往下走安装pytorch前往官网,并且往下滑动,直到你看见INSTALLPYTORCH:PyTorch看左下角的PreviousversionsofPyTorch,点进去:这里显示最新的是v2.2.0版本,咱就下这个,按设......
  • Manacher 学习笔记
    \(\text{Manacher}\)学习笔记定义所谓回文串,指的是对于一个字符串\(s\),若它的长为\(n\),下标从\(1\)到\(n\),如果\(\foralli\in[1,n],s_i=s_{n+1-i}\),那么字符串\(s\)是一个回文串。给定一个字符串\(s\),求解它总共的回文子串个数。对于这一类问题的求解,我们发现,因为......
  • RTP报文头中的SSRC和CSRC
    以下内容转载自http://www.360doc.com/content/11/1009/15/496343_154624612.shtml和https://www.cnblogs.com/yoyotl/p/5650101.html同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。·特约信源(CSRC)标识......
  • C语言之兔子生产问题
    /#include<stdio.h>main(){longfib1=1,fib2=1,fib;//定义长整型变量,fib1表示当前前一个月的兔子数,fib2表示当前前两个月的兔子数,fib表示当前月份兔子数inti;//月份变量printf("%12ld%12ld",fib1,fib2);//输出第一个月和第二个月的兔子数,%ld用于输出长整型数据,而%12l......
  • 使用C#读写ini文件
    使用C#读写ini文件要用到Windows的API函数:GetPrivateProfileString、WritePrivateProfileString,下面对该方法进行封装并以具体ini文件为例说明如何读写。1、ini文件示例;FTP服务器参数[FtpServer]IP=127.0.0.1Port=21UserName=userPassword=user2、IniHelper.cspubli......
  • Data encapsulation of HTTP, TLS, TCP and IP
    数据包封装过程 原文:TLSrecordsizehasanimportantimpactontheperformanceofHTTPS.Herewediscusstheeffectofrecordsizeondataencapsulation,asshowninFigure2.TCPisabyte-streamprotocol,whichcansplitmessagefromtheupperlayerofT......
  • C 结构体中的位域概念
    位域一、基本概念1.1位域的概念结构体中的冒号表示位域,如:structbit_struct{unsignedintbit1:10;unsignedintbit2:8;unsignedintbit3:14;}data1;//sizeofdata1=4structbit_struct{unsignedintbit1:10;unsignedintbit2:8......
  • ModbusTCP协议简介与编程流程图
      本文主要目的是为了写一个简单的ModbusTCP服务器-客户端程序而记录的知识点,里面包含了编程所需要的必要背景知识和协议解析流程图。Modbus基本数据类型  Modbus有四种基本数据类型:离散量输入:客户端只能读取它,由服务器提供,占1个比特位,可以传输现实中的开关量输入,比如接近......
  • Python基于TCP实现聊天功能
    Server端importsocketimportqueueimportthreadingimporttimeserversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()print("服务器IP:"+socket.gethostbyname(host))serversocket.bind((host,9090))serversock......