Sınıfa CancellationToken
ek olarak .NET struct'ın neden tanıtıldığına dair bir mantık arıyorum CancellationTokenSource
. Anlıyorum nasıl API kullanılacaksa, aynı zamanda anlamak istiyorum neden o şekilde olduğunu tasarlanmıştır.
Yani, neden elimizde:
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts.Token);
...
public void SomeCancellableOperation(CancellationToken token) {
...
token.ThrowIfCancellationRequested();
...
}
doğrudan CancellationTokenSource
etrafta dolaşmak yerine :
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts);
...
public void SomeCancellableOperation(CancellationTokenSource cts) {
...
cts.ThrowIfCancellationRequested();
...
}
Bu, iptal durumu kontrollerinin jetonun etrafından dolaşmaktan daha sık gerçekleştiği gerçeğine dayanan bir performans optimizasyonu mu?
Böylece bu CancellationTokenSource
takip ve güncelleme yapabilir CancellationTokens
ve her belirteç için iptal kontrolü yerel bir alan erişimidir?
Her iki durumda da kilitlemesiz geçici bir bool'un yeterli olduğu göz önüne alındığında, bunun neden daha hızlı olacağını hala anlayamıyorum.
Teşekkürler!