メモ
Stream::FromHandle()で、handle からStreamインスタンスを作るインターフェースの話。
その中で今までは Mutexを1つしか使用していなかったので
handle -> Mutex
が一意に対応していました。
今回拡張に伴い、Mutexが3つほど必要になりました。
で、handle からそれらを復元しなければいけないんですが、誰かが handle →3つのMutexの対応情報を保持しなければいけません。
情報はプロセスの寿命よりも長く保持されなければいけないのでカーネル上に保持しようかとまずはかんがえました。
でも良く考えれば、せっかくStreamをカーネルの外に追い出しているのに、そこだけカーネルっての微妙だし、そこはこだわりたいところです。
なので、リソース一般をうまいこと管理するような仕組みをカーネル側に用意するのはどうだろうか。
mjtさん流に言うならば名前空間というかオブジェクトマネージャってやつです。
その仕組みを更にカーネルの外に追い出したら、もっとMonaらしいなあ。
これをまずLinux上で実装して、バグもメモりリークもなくなってからMonaに移植しよう。
って、泳ぎながら考えていました。
帰ってコードを見てみたら、もっと現実的で、賢い仕組みを1週間前位の自分が用意していました。
そんなこんなでコード書きを再開します。