多核心與同步

關於讀寫鎖(reader-writer lock)的特徵,下列何者正確?

  1. A寫入的執行緒可以有任意多個同時進入,但讀取的執行緒只能有1個
  2. B只讀取的執行緒可以有任意多個同時進入,但寫入的執行緒只能有1個,且此時其他任何人都不能進入
  3. C無論讀取或寫入,一定只能有1個執行緒進入
查看答案與解析

正確答案:B. 只讀取的執行緒可以有任意多個同時進入,但寫入的執行緒只能有1個,且此時其他任何人都不能進入

只讀取的話,同時進行也不會破壞資料,所以讀寫鎖允許讀取者之間同時執行,只讓寫入者獨占。對於像設定表這種常被讀取、很少被改寫的資料,可以提高平行度。不過若讀取者源源不絕,寫入者可能一直進不去,因此有些實作會設計成讓寫入者優先。

  • A. 恰好相反。
  • B. 正確。適合常被讀取的資料。
  • C. 那是一般的鎖(互斥鎖)。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 關於計數型號誌(counting semaphore)的用法,下列何者最適當?
  2. 關於快取一致性與記憶體一致性模型的差異,下列說明何者正確?
  3. 關於硬體交易式記憶體(hardware transactional memory)的概念,下列何者正確?
  4. 以條件變數(condition variable)「等到佇列不為空」時,被喚醒後之所以用while敘述而非if敘述重新確認條件,其理由下列何者正確?
  5. 兩個核心各自的快取中都有變數x的副本。核心0寫入x之後,核心1讀取x時,若沒有快取一致性(cache coherency)機制,可能發生下列何種問題?

這個領域的比較