我所知道的是:

  • ReadLock WriteLock 互相影响
  • WriteLock就像同步的
  • ReadLock似乎无法单独工作
  • 最佳答案

    readLock.lock();

  • 这意味着,如果还有其他线程是,则写(即
    写锁),然后在此处停止,直到没有其他线程在写。
  • 一旦授予锁定,将不允许其他线程对写入
    (即使用写锁),直到释放该锁为止。


  • writeLock.lock();
  • 这意味着,如果其他任何线程正在读取或写入,则停止
    在这里等待直到没有其他线程正在读取或写入。
  • 授予锁定后,将不再允许其他线程读取
    或写入
    (即获取读或写锁),直到释放该锁为止。


  • 结合使用这些功能,您一次只能安排一个线程具有写访问权,但是,除了一个线程正在写时,您可以同时阅读任意数量的阅读器。

    换一种方式。每次您想从结构中读取时,都采取读取锁。每次您要写入时,都要给写入锁。这样一来,只要发生写操作,就不会有人在阅读(您可以想象您具有独占访问权),但是只要没有人在写,就会有许多读者在同一时间阅读。

    09-20 23:04