zoukankan      html  css  js  c++  java
  • C# 异步锁

    参考网址: https://www.cnblogs.com/Alicia-meng/p/13330640.html

    • 使用SemaphoreSlim 实现
      • 当多个任务或线程并行运行时,难以避免的对某些有限的资源进行并发的访问。可以考虑使用信号量来进行这方面的控制(System.Threading.Semaphore)是表示一个Windows内核的信号量对象。如果预计等待的时间较短,可以考虑使用SemaphoreSlim,它则带来的开销更小。.NetFrameWork中的信号量通过跟踪进入和离开的任务或线程来协调对资源的访问。信号量需要知道资源的最大数量,当一个任务进入时,资源计数器会被减1,当计数器为0时,如果有任务访问资源,它会被阻塞,直到有任务离开为止。
        如果需要有跨进程或AppDomain的同步时,可以考虑使用Semaphore。Semaphore是取得的Windows 内核的信号量,所以在整个系统中是有效的。它主要的接口是Release和WaitOne,使用的方式和SemaphoreSlim是一致的。
    private static readonly SemaphoreSlim _mutex = new SemaphoreSlim(1);
    
            static int _value;
    
            public async static Task DelayAndIncrementAsync()
            {
                await _mutex.WaitAsync();
                try
                {
                    var oldValue = _value;
                    await Task.Delay(TimeSpan.FromSeconds(oldValue));
                    Console.WriteLine(_value);
                    _value = oldValue + 1;
    
                }
                catch (Exception ex)
                {
    
                    Console.WriteLine(ex.Message);
                }
                finally
                {
    
                    _mutex.Release();
                }
            }
  • 相关阅读:
    springMVC接收前端参数的方式
    使用jQuery进行图片分页,每页形成九宫格
    bootstrapTable行样式设置
    BLUEKING----蓝鲸
    Golden Gate 特点及用途
    Linux 如何解决 xhost: unable to open display ""
    LINUX 磁盘如何分区
    ses_cations 值顺序
    简单了解undo
    演示行级排他锁
  • 原文地址:https://www.cnblogs.com/bruce1992/p/15128173.html
Copyright © 2011-2022 走看看