Tôi đang tìm kiếm một lý do tại sao .NET CancellationTokenstruct được giới thiệu ngoài CancellationTokenSourcelớp. Tôi hiểu cách sử dụng API, nhưng cũng muốn hiểu tại sao nó được thiết kế theo cách đó.
Tức là tại sao chúng ta có:
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts.Token);
...
public void SomeCancellableOperation(CancellationToken token) {
...
token.ThrowIfCancellationRequested();
...
}
thay vì trực tiếp đi qua CancellationTokenSourcenhư:
var cts = new CancellationTokenSource();
SomeCancellableOperation(cts);
...
public void SomeCancellableOperation(CancellationTokenSource cts) {
...
cts.ThrowIfCancellationRequested();
...
}
Đây có phải là một tối ưu hóa hiệu suất dựa trên thực tế là việc kiểm tra trạng thái hủy xảy ra thường xuyên hơn so với việc chuyển mã thông báo xung quanh?
Vì vậy, CancellationTokenSourcecó thể theo dõi và cập nhật CancellationTokens, và đối với mỗi mã thông báo, kiểm tra hủy là truy cập trường địa phương?
Cho rằng một bool dễ bay hơi không có khóa là đủ trong cả hai trường hợp, tôi vẫn không thể hiểu tại sao điều đó sẽ nhanh hơn.
Cảm ơn!

