kubo39's blog

ただの雑記です。

druntimeのcore.syncについて

いろいろいけてないよな。

  • Mutexの実装がデフォルトでre-entrant
  • 条件変数およびセマフォタイムアウトつきwaitがmonotonicなclockじゃなくシステムクロック
    • なので、システムの時刻変更によって予期せぬ振る舞いが起こりえる

このあたりはC++ではあたりまえに認知されている(デフォルトのmutex実装と別にrecursive mutexを用意、タイムアウトつきの待ちではstd::chrono::steady_clock使う)のと、Rustも実装では同じようになっているのになぜDは微妙な実装になってるのだろう。