2010-12-01から1ヶ月間の記事一覧

実用例

「スレッド間で共有する変数のアクセス権制御を C++ コンパイラで強制する方法」 http://developer.cybozu.co.jp/kazuho/2009/06/c-c79a.htmlをupgrade_lockを利用して実装してみます。 これはmutexと保護対象オブジェクトを密結合させたオブジェクトを作る…

Boostに以前からread-writeロックは実装されていたようですがバグがあったとかで最近の物ではupgrade_lock, upgrade_to_unique_lockにさし変わっています。ただのロックと比べてパフォーマンスが出やすい上に素性の良い設計だと思うので紹介してみようと思い…

Lock-free Stack

ではLock-free Stackについて図とプログラムを交えながら説明します。C++ではなくCを使います。 これは複数スレッドからロックによる排他無しで共有できるスタックで、外部には node* top; void push(const T*, node** top); bool pop(T*, node** top); を提…

non-blockingの意味するところ

海外の文献を読み漁っていると気づくのですが 2003年を境にこの文脈で使われる言葉の定義が変わります。 ↑2003年ごろまでの構図 ↑現在の構図。*1 non-blocking = obstruction-free という理解でもおおよそ間違いではないとは思いますが 論文を読むに当たって…

lock-free stackと並行アルゴリズムの区分

この記事は カーネル/VM Advent Calendar http://atnd.org/events/10701 のために書かれました。これまで複数回に渡ってlock-freeデータ構造を紹介して来ましたが そもそもの前提を話していなかったり目的も不明だったりと不備だった点があったので 根元か…