我读到写锁是独占的,读锁是共享的,因此在readlock中无论如何都可以由多个线程访问一段代码。如果争用中的线程未获取任何读取锁,该怎么办。他们将以任何方式只读。如果获取读锁的线程试图写东西,该怎么办?

谢谢

最佳答案

对于同时具有读取和写入功能的多线程代码,如果线程在读取时忽略了获取锁,则由于同时进行写入,存在读取不一致或无用数据的风险。例如,它可以像写入长变量一样读取长变量,并且可以读取旧值的上半部分和新值的下半部分,这意味着它读取的值将是完全垃圾,这有点从来没有真正写过。

如果具有读取锁定的线程在写入时没有写入锁定,则可能导致其他读取线程以类似方式读取垃圾数据。

09-11 06:33