いろいろいけてないよな。
- Mutexの実装がデフォルトでre-entrant
- 条件変数およびセマフォのタイムアウトつきwaitがmonotonicなclockじゃなくシステムクロック
- なので、システムの時刻変更によって予期せぬ振る舞いが起こりえる
このあたりはC++ではあたりまえに認知されている(デフォルトのmutex実装と別にrecursive mutexを用意、タイムアウトつきの待ちではstd::chrono::steady_clock使う)のと、Rustも実装では同じようになっているのになぜDは微妙な実装になってるのだろう。