zoukankan      html  css  js  c++  java
  • c# 锁 Interlocked 操作

        //定义原子变量


    int mituxInt = -1; //原子级别+1值,如果>=0,说明当前锁为空,可以执行,避免重复执行 if (Interlocked.Increment(ref mituxInt) <= 0) { if (_serverThread == null || (_serverThread.IsAlive == false)) { AutoConnect = isAutoConn; _serverThread = new Thread(new ThreadStart(ThreadConnectServer)); _serverThread.IsBackground = true; _serverThread.Start(); } Interlocked.Exchange(ref mituxInt, -1); }

    int lock2=0;
    
    private void FuncMustDo()
            {
                //交换lock2 和1,返回lock2以前的值,这个和lock不一样的是,可以加其他条件
                while (Interlocked.Exchange(ref lock2, 1) != 0)
                {
    
                }
                //啪嗒啪嗒执行操作
    //置0 Thread.VolatileWrite(ref lock2, 0);//Thread.VolatileWrite执行一个原子写入操作,它的每次执行都具有释放语义 }

      

  • 相关阅读:
    CF1416D Graph and Queries
    Wordpress建站系统相关
    微观经济学
    Preface
    Thread pool in chromium
    [fllutter engine] 并发消息队列
    bugku misc
    python 3.1学习
    HTML&CSS
    DOM技术点
  • 原文地址:https://www.cnblogs.com/AllowCloud/p/9675411.html
Copyright © 2011-2022 走看看