クラスCancellationToken
に加えて.NET 構造体が導入された理由の根拠を探していますCancellationTokenSource
。APIの使用方法は理解していますが、そのように設計されている理由も理解したいと思います。
すなわち、なぜ私たちは持っているのですか?
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts.Token);
...
public void SomeCancellableOperation(CancellationToken token) {
...
token.ThrowIfCancellationRequested();
...
}
次のように直接渡す代わりにCancellationTokenSource
:
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts);
...
public void SomeCancellableOperation(CancellationTokenSource cts) {
...
cts.ThrowIfCancellationRequested();
...
}
これは、トークンを渡すよりもキャンセル状態のチェックが頻繁に行われるという事実に基づくパフォーマンス最適化ですか?
それで、CancellationTokenSource
を追跡して更新できCancellationTokens
、各トークンのキャンセルチェックはローカルフィールドアクセスですか?
どちらの場合も、ロックされていない揮発性のブールで十分であることを考えると、なぜそれが速いのかはまだわかりません。
ありがとう!