地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【TCP】TCPサーバーの非同期処理

手法 メリット デメリット
select メモリやリソース消費が抑えられる 扱えるディスクリプタに制限がある
一つのソケットの送受信処理の間に他のソケットを扱えない
poll メモリやリソース消費が抑えられる
ディスクリプタ制限なし
一つのソケットの送受信処理の間に他のソケットを扱えない
EPOLL pollの高速化版
ディスクリプタ制限なし
一つのソケットの送受信処理の間に他のソケットを扱えない
fork 処理待ちソケットがあまり発生しない プロセス生成コストが大きい
thread 処理待ちソケットがあまり発生しない スレッドの生成コストとコネクション分のスタック領域を消費する
pre-fork 処理待ちソケットがあまり発生しない
プロセス生成コストが起動時しかない
データの受け渡しとロック処理、プロセスの管理の手間
pre-thread 処理待ちソケットがあまり発生しない
スレッド生成コストが起動時しかない
データの受け渡しとロック処理、スレッドの管理の手間
EPOLL+thread メモリとリソース消費を抑えつつ、待ち時間を最大限に低くできる スレッド生成コスト。データの受け渡しとスレッド管理の手間
EPOLL+pre thread メモリとリソース消費を抑えつつ、待ち時間を最大限に低くできる データの受け渡しとスレッド管理の手間がより複雑だが、うまく実装すれば完璧なパフォーマンスを出すはず