これは、Microsoft C++ Concurrency API のコンテキストにあります。
agent
(名前空間の下に)と呼ばれるクラスがありConcurrency
、それは基本的に純粋な仮想を派生させて実装するステートマシンですagent::run
。
ここで、実行可能なagent::start
状態にするを呼び出すのはあなたの責任です。次に、* またはそのバリアントのいずれかを呼び出して、メソッドを実際に実行します。agent::wait
agent::run
しかし、なぜagent::done
体内で呼び出さなければならないのでしょうか? つまり、明らかな答えは、agent::wait
* は完了が通知されるか、タイムアウトが経過するまで待機するということですが...
設計者は何を意図していたのですか?agent::run
戻ったときにエージェントを完了状態に入れないのはなぜですか? それが私が知りたいことです。電話をかけないという選択肢があるのはなぜdone
ですか? タイムアウトが経過すると、待機メソッドは例外をスローします。