zoukankan      html  css  js  c++  java
  • ReaderWriterLock的UpgradeToWriterLock方法的一种使用场景

    ReaderWriterLock对比互斥锁(lock)的优势是,读锁和写锁的分离,读锁之间互不排斥。

    当然,本文重点不是讲ReaderWriterLock本身,而是讲它的UpgradeToWriterLock方法。

    考虑以下场景。

    有一个Dictionary,多线程同时修改和遍历它。其中有一个线程在遍历它时(读锁),需根据某些条件,可能(可能性较小,不然直接使用读锁也无妨)对此Dictionary做Remove操作。因为这个线程在此获取的是读锁,如果直接去对Dictionary做Remove操作,势必会影响其他也在读锁中的线程。怎么办呢?

    这个时候,就是UpgradeToWriterLock方法出场的时候了!该方法的作用是把当前的读锁升级为写锁,升级后,该线程便会像获得写锁一样,等待其他读锁的结束。于是,接下来的Remove操作就是线程安全的了。(结束后记得DowngradeFromWriterLock)

  • 相关阅读:
    mybatis LIKE模糊查询若干写法
    OKR和KPI区别和适用对象
    谈谈 Puppeteer
    jq
    tput
    nodejs + ffmpeg 实现视频转动图
    Golang IO操作
    golang 三个点的用法
    Golang Package 与 Module 简介
    Python合并字典组成的列表
  • 原文地址:https://www.cnblogs.com/shenzhigang/p/5192153.html
Copyright © 2011-2022 走看看