मैं एक तर्क की तलाश में हूं कि क्यों क्लास के CancellationTokenअलावा .NET स्ट्रक्चर को पेश किया गया CancellationTokenSource। मैं समझता हूं कि एपीआई का उपयोग कैसे किया जाता है, लेकिन यह भी समझना चाहता हूं कि इसे इस तरह से क्यों बनाया गया है।
यानी, हमारे पास क्यों है:
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, और प्रत्येक टोकन रद्द करने के लिए एक स्थानीय क्षेत्र का उपयोग है?
यह देखते हुए कि बिना किसी लॉकिंग के एक अस्थिर बूल दोनों मामलों में पर्याप्त है, मैं अभी भी यह नहीं देख सकता कि यह तेजी से क्यों होगा।
धन्यवाद!

