คำถามติดแท็ก cancellationtokensource

5
ทำไม Can CancelToken จึงแยกจาก Can CancelTokenSource
ฉันกำลังมองหาเหตุผลว่าทำไม. NET CancellationTokenstruct จึงถูกนำมาใช้นอกเหนือจาก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และสำหรับแต่ละโทเค็นการตรวจสอบการยกเลิกคือการเข้าถึงฟิลด์ภายในหรือไม่? เนื่องจากบูลที่ระเหยได้โดยไม่มีการล็อคก็เพียงพอแล้วในทั้งสองกรณีฉันยังไม่เห็นว่าทำไมถึงเร็วขึ้น ขอบคุณ!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.