ネットワークサーバにおいて,接続クライアントごとにスレッドを生成してし まうと,同時接続クライアント数に従いスレッド数が増えてしまい,資源の枯 渇を起こす可能性がある.また,資源の枯渇が起きないまでも,多くのスレッ ド生成,終了処理が行われるためオーバヘッドが大きくなる.この問題を解決 する方法にスレッドプールがある.
スレッドプールは,固定数のスレッドの集合であり,スレッド生成のリクエス トに対して,仕事をしていないスレッドが対応する.スレッドプールの全ての スレッドが仕事中であれば,どれかのスレッドが終了するまでそのリクエスト は待たされることになる.
スレッドプールを実現するためには,まず,スレッド生成のリクエストを保持 するためのキュー,あるいは巡回バッファが必要となる.スレッド生成のリク エストを保持するためには,pthread_createの引数で分かるとおり,関数ポイ ンタと引数のポインタを保持すればよい.
次は,スレッド生成のリクエストを保持するキュー,あるいは巡回バッファに 保持されているリクエストを実行するワーカスレッドを,スレッドプールに必 要な数起動する.ワーカスレッドは,リクエストを取得し,取得できれば実行, そうでなければ取得できるまで待つ,という動作を繰り返せばよい.
提出締切は 11/20(日) 20:00とする.
レポートには,プログラム,実行結果,考察,授業の感想を必ず含めること.
課題は筑波大学 e-Lerning システム
にアップロードすること.