マルチスレッドのロック機構を自作してKyoto Cabinetを高速化したよという話。 背景 以前の記事にも書いたとおり、組み込みのrwlockはmutexに比べても遜色ない速度で動作して素敵なのだが、実はロック処理自体の並列性があんまり高くないんじゃないかなぁと思い始めてきた。というか、pthreadのロック機構は遅い(期待ほど速くない)んじゃないかなぁと感じる今日この頃。 特にspin lock(pthread_spinlock_t)とrwlock(pthread_rwlock_t)が遅い気がしている。プロファイルをとると、Kyoto Cabinetの実行時間の多くをロック回りの処理が占めているので、こいつらを自作のロックに置き換えて軽量化してみよう。pthreadのロックプリミティブはPOSIXの規程に基づいたいろんな機能を備えているが、自分で作れば自分のユースケースに必要な機能だけ