gcc 4.1のアトミック命令

http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
これ使って高速なスレッドプールを作れないかな。

高速スレッドプール+mpio→高速汎用非同期IO。

mpioは現在開発中のC++用ライブラリで、IO多重化(kqueue/epoll)を抽象化する。抽象化しつつもテンプレートでひたすら最適化する。

レイヤー構造になっていて、最下層のイベントレイヤー(mp::event)は単にkqueue/epoll/selectを抽象化するだけ。オーバーヘッドはほぼゼロで高速。

イベントレイヤーの上にイベント駆動レイヤー(mp::dispatch)というのを作っていて、イベント駆動なサーバーを簡単に書ける。オーバーヘッドは関数呼び出し1回分。

さらにバッファ付きIOレイヤー(mp::io)というを作っていて、これはread_at_least(...bytes)とかwrite_just(...bytes)とかaccept_and_set_callback()というような便利関数が揃っている。ついでに高速なメモリプールが付いている(独自開発!)。オーバーヘッドは仮想関数の呼び出し1回+コールバック関数の呼び出し+メモリのオーバーヘッドが多少。


これにくわえて、非同期IOレイヤーを作りたい。そこでスレッドプール。うーむ。