CancellationTokenSource vs. volatile boolean
在一个易失性布尔字段上使用CancellationTokenSource来表示Task
完成是否有任何好处?
当然是的。 有许多。 我列举的很少。
-
CancellationToken
支持回调。 您可以在要求取消时收到通知。 -
CancellationToken
支持WaitHandle
,您可以等待无限期或超时。 - 您可以使用
CancellationTokenSource.CancelAfter
方法安排取消CancellationTokenSource.CancelAfter
。 - 您可以将
CancellationToken
链接到另一个,这样当一个被取消时,另一个可以被视为已取消。 - 通过
Task
如果你的意思是System.Threading.Tasks.Task
一个volatile boolean不能将Task的状态转换为Cancel,但CancellationToken
可以。