多核心與同步

將迴圈的各次迭代分配給多個執行緒時,若每次迭代的運算量差異很大,適合的分配方式為下列何者?

  1. A一開始依迭代的次數平均分配,之後不再調整的靜態分配
  2. B將所有迭代交給一個執行緒
  3. C把工作分成小區塊,由有空的執行緒去領取下一個區塊的動態分配
查看答案與解析

正確答案:C. 把工作分成小區塊,由有空的執行緒去領取下一個區塊的動態分配

靜態分配雖然負擔較少,但若每次迭代的重量不同,只有負責較重部分的執行緒會落後,其他執行緒則得等待。動態分配則是從共用計數器等處領取下一份工作,先完成的執行緒會負責更多,因此負載會變得平均。不過區塊太小的話,領取的負擔會增加,所以需要調整大小。

  • A. 即使次數相同,運算量不同的話,偏差仍會殘留。
  • B. 這樣就不算平行化了。
  • C. 正確。可以自動平衡工作的偏差。
練習這個領域 前往領域頁面

多核心與同步的其他題目

  1. 以多個執行緒計算陣列所有元素的總和時,為了效能,適合的方法為下列何者?
  2. 關於讀寫鎖(reader-writer lock)的特徵,下列何者正確?
  3. 關於計數型號誌(counting semaphore)的用法,下列何者最適當?
  4. 關於快取一致性與記憶體一致性模型的差異,下列說明何者正確?
  5. 關於硬體交易式記憶體(hardware transactional memory)的概念,下列何者正確?

這個領域的比較