1063 shaares
28 private links
28 private links
最近の Rust エコシステムでは no_std
環境でスピンロックを使うような慣習があるが、スピンロックには重大な欠点がある。
よくできた (std や parking_lot
crate の) mutex ではスピンロックと同等かそれ以上のパフォーマンスが出るため、安易にスピンロックを使うべきでないという話。
スピンロックで起きる問題のサンプルコード付き。
They (
std
やparking_lot
の mutex) already do a small amount of spinning iterations before calling into the kernel, so they are as fast as a spinlock in the best case, and infinitely faster in the worst case.(注釈は引用者による)
また、軽量なロックを使いたい場面としてよくあるのが「一回きりの初期化」だが、この場合筆者の作った once_cell
crate が有用だとのこと。