November 2023
Intermediate to advanced
236 pages
3h 24m
Japanese
通常のMutex(「1.7 ロック:MutexとRwLock」参照)をロックする場合、そのMutexがすでにロックされていたらスレッドはスリープする。こうすることでMutexがリリースされるまでの間、資源を浪費することを避ける。しかし、Mutexがロックされる時間が非常に短く、スレッドが別のプロセッサコアで並列に実行できる場合には、スリープせずに繰り返してロックを試みるようにした方がいい場合もある。
スピンロックは、まさにこのように動作するMutexだ。すでにロックされているMutexをロックしようとした場合、ビジーループ(busy-looping)もしくはスピン(spinning)する、つまり成功するまで何度もロックの取得を試みる。プロセッササイクルを浪費することになるが、ロックのレイテンシを短縮できる場合がある。
![]() |
|
|
本章では、「2章 アトミック操作」と「3章 メモリオーダリング」で学んだことを応用して、独自のSpinLock型を実装し、Rustの型システムを用いて安全で使いやすいインターフェイスを提供する方法を説明する。
スピンロックをゼロから実装してみよう。 ...
Read now
Unlock full access