タグ

ブックマーク / kumagi.hatenadiary.org (3)

  • userspace RCU(QSBR)の使い方と解説 - くまメモ

    http://lttng.org/urcu|Userspace RCU という大変クールなプロジェクトがあります。 「RCU(リードコピーアップデート)をユーザースペースで行うもの」という事で、そこだけ聞くとなんのこっちゃという感じ。 リードコピーアップデートって何よ リードコピーアップデートそのものの正しい説明はWikipedia*1 でも読んでもらうとして、Wikipediaを読むのすら面倒な人の為に説明すると「みんなで共有してるデータをfree()しても良いタイミングを見極める技術」です。 特定の構造体をみんなで共有して書き換えたりしたいな → Lockとればよくね? すごく頻繁にアクセスするし読み出しの方が多いからLockはやだな → Read-Write Lockでよくね? Read-Write LockだとAtomic命令多すぎてパフォーマンスでないな → Lock無くしてデー

    userspace RCU(QSBR)の使い方と解説 - くまメモ
    syuu1228
    syuu1228 2013/08/04
    userspace RCU(QSBR)の使い方と解説 - くまメモ
  • 2010-12-27

    Boostに以前からread-writeロックは実装されていたようですがバグがあったとかで最近の物ではupgrade_lock, upgrade_to_unique_lockにさし変わっています。 ただのロックと比べてパフォーマンスが出やすい上に素性の良い設計だと思うので紹介してみようと思います。 read lock read-lockをする場合はshared_mutexを引数にshared_lockをかけてやればいいです。 #include <boost/thread.hpp> using namespace boost; shared_mutex mutex; void reader(){ shared_lock<shared_mutex> read_lock(mutex); // ここでロック! // クリティカルセクション } スコープを外れると同時にshared_lockのデスト

    2010-12-27
    syuu1228
    syuu1228 2010/12/27
    RT @kumagi: ブログ書いた boost::upgrade_lockに付いて簡潔に
  • google mockで快適テスト生活 - くまメモ

    googleにより公開されているgoogle mockが使いやすかったので使い方紹介。 http://code.google.com/p/googlemock/ から落としてペペっと入れましょう。 使いたいシーンとしては、充分モジュール化されたオブジェクト指向プログラム中で int main(){ A a; B b; func(&a, &b); // a->hoge(1) と b->fuga(2,3) が呼ばれて欲しい! } この様に特定の関数が狙った通りの動作をして欲しい(というか、その動作をすることを仕様化したい場合) #include <gtest/gtest.h> #include <gmock/gmock.h> class mock_A{ public: MOCK_METHOD1(hoge,void(int)); // void hoge(int);と同義 }; class mo

    google mockで快適テスト生活 - くまメモ
    syuu1228
    syuu1228 2010/10/21
    RT @kumagi: 日記ed.
  • 1