线程与锁

本章使用了一个示例,展示了线程间竞争的问题.

我们需要使用锁来保护临界资源,从而避免竞争.

问题

  1. put函数中加锁,保护临界资源

    • 通过缩小锁的保护范围,我们可以看到明显的性能提升.
  2. 是否有必要在get函数中加锁?

    • 在本例中因为线程是在写完毕后读,因此若每个bucket使用一个锁,则get不必加锁.
    • 关键在于,引入了读写锁的概念
    • 若有人在写,则所有人不可读
    • 若有人在读,则所有人可读

results matching ""

    No results matching ""