並行性サポート機能案

ユーザとインタラクションするプログラムを考えると、

  • ノンブロックで、Sync系変数に値が入っているか確認するメソッド
  • read/readcdrしてブロックした際、一定時間でタイムアウトするメソッド

なんかが、まず候補になりそう。値が入っているかどうか確認することは簡単にできる(すでに値が入っているかどうかのFlag変数がある)が、タイムアウトは実は難しい。タイムアウト付きセマフォ操作が無いので。
最近のLinuxにはあるみたいなので、それを使うという手もあるが、移植性は下がるなぁ…

他に必要そうな機能として、複数のリストをマージする機能がある。これは、並列論理型言語で使われていたイディオムで、複数の生産者プロセスのリスト出力を一つにまとめるもの。リストを消費する側から見ると、マージされたリストを待てば、複数の生産者のうち一つでもリストセルを作ることでブロックから復帰し、処理を開始できる。UNIXで言えばselectのようなものか。
WorkPoolと同様にすれば実現できそうではある(リストをマージするというより、生産者側が特定のクラスの変数に書き込む形になるが)。

まぁ、いずれの機能もなんらかのプログラムを対象に試してみて、本当に必要かとか正しい仕様かとかを確認しないといけないが。そうすると、敷居が高いんだよなぁ…