클래스 CancellationToken
외에도 .NET 구조체가 도입 된 이유에 대한 근거를 찾고 CancellationTokenSource
있습니다. API가 어떻게 사용되는지 이해 하지만 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
각 토큰에 대해 취소 확인이 로컬 필드 액세스입니까?
두 가지 경우 모두 잠금이없는 휘발성 부울만으로 충분하다는 것을 감안할 때 여전히 더 빠른 이유를 알 수 없습니다.
감사!