2008-10-01から1ヶ月間の記事一覧

MessagePack RPC フレームワークの設計案

プロトコルにMessagePackを、IO戦略にmp::iothreadsを使ったRPCフレームワークの設計案。RPCのメソッドと、それに対応するコールバック関数の関連づけをリンク時に行う。google-gflagsと同じ戦略。 プロトコルは以下の3種類: Request [true, メソッドID, 引…

pthread_mutexはプロセスを越える

futex(2) を使ってせっせとmutexとconditionを実装していたら、意外なところに盲点が。 Linux では pthread_mutex と pthread_cond がプロセスを越えられる。移植性は無いようで、Mac OS Xでは動かなかった。 やり方は mmap(2) に MAP_SHARED フラグを渡して…

サイズによるmalloc(3)の負荷の違い

ネットワークIOのバッファリングを行うコードを書く必要があったので、確保するメモリのサイズによってmalloc(3)にかかる時間がどれくらい違うのか調べてみた。 環境は: Linux vcore.local 2.6.22.9-vcore16 #1 SMP Sun Oct 14 22:13:32 JST 2007 x86_64 AM…

MessagePackでIDLを書く

MessagePackでプロトコルを定義する。言わばIDLを書く機能。 #include <msgpack.hpp> // プロトコル定義とか namespace protocol { using msgpack::define; using namespace msgpack::type; // msgpack::define<T>を継承する。 // - msgpack::object型から直接型変換できる /</t></msgpack.hpp>…