Spinlocks and Read-Write Locks Most parallel programming in some way will involve the use of locking at the lowest levels. Locks are primitives that provide mutual exclusion that allow data structures to remain in consistent states. Without locking, multiple threads of execution may simultaneously modify a data structure. Without a carefully thought out (and usually complex) lock-free algorithm, t
前のエントリで次期C++標準(通称C++0x)にatomic型とメモリバリアが導入されるという話をしました。今回はそのC++での実装について、もう少し深く追いかけてみます。 スライド資料では「atomic操作 + acquire/releaseバリア」が基本であると書きましたが、実際に次期C++に導入される予定のatomic APIは、もう少し複雑な仕様になっています。一番の違いは、メモリバリアの種類が増えていることです。 次期C++標準の現在のドラフトでは、メモリバリアの種類を表すenum型の定義は以下のようになっています。 namespace std { typedef enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, m
HTMの第一人者にして、obstruction-freeやwait-freeなどの厳密な定義や、CAS命令の数学的な意義を証明し、The Art of Multiprocessor Programmingの著者で、ロックフリーでもSTMでも八面六臂の活躍をしているMaurice Herlihy先生が連名している最近の論文を流し読み。 Aleksandar Dragojevic, Maurice Herlihy, Yossi Lev, Mark Moir: On the power of hardware transactional memory to simplify memory management. PODC 2011: 99-108 「トランザクショナルメモリのパワーでメモリ管理を簡略化する」という感じ。 GCを使わない環境下においてメモリ管理は鬼門になってて、そのせいでC++のロ
くまぎ @kumagi ブログ書いた 「userspace RCU(QSBR)の使い方と解説」 http://t.co/mvjPoU6M51 安全にロックフリーするための局所的なガベージコレクタとも言える。 2013-08-03 10:17:18 Sadayuki Furuhashi @frsyuki @kumagi 全スレッドがrcu_quiescent_stateを定期的に呼ばないと成立しない気がしますが、データの読み出しを行わないスレッドとか、たまに行わなくなるスレッドは、どういうタイミングでrcu_quiescent_stateを呼んでいるんでしょ? 2013-08-03 10:35:06 くまぎ @kumagi @frsyuki ぉ、その欠点に気づいてしまうとはさすがですね。他のUserspaceRCUがみんなRW-Lockの代わりにも使える(しかも位置やシグネチャも一致するので
http://lttng.org/urcu|Userspace RCU という大変クールなプロジェクトがあります。 「RCU(リードコピーアップデート)をユーザースペースで行うもの」という事で、そこだけ聞くとなんのこっちゃという感じ。 リードコピーアップデートって何よ リードコピーアップデートそのものの正しい説明はWikipedia*1 でも読んでもらうとして、Wikipediaを読むのすら面倒な人の為に説明すると「みんなで共有してるデータをfree()しても良いタイミングを見極める技術」です。 特定の構造体をみんなで共有して書き換えたりしたいな → Lockとればよくね? すごく頻繁にアクセスするし読み出しの方が多いからLockはやだな → Read-Write Lockでよくね? Read-Write LockだとAtomic命令多すぎてパフォーマンスでないな → Lock無くしてデー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く