Re[17]: Киллер фича JDK 21 - virtual threads
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 11.05.23 09:46
Оценка:
Здравствуйте, ·, Вы писали:


S>> ·>Неясно какое отношение это имеет к асинхронщине или многопоточке. Это ортогональные вещи.

S>> Прямое! Вот куча примеров https://metanit.com/sharp/tutorial/12.5.php
S>> https://learn.microsoft.com/ru-ru/dotnet/standard/threading/cancellation-in-managed-threads
·>И? Это ортогональные вещи. Ровно этот же CancellationToken используется так же и в синхронном коде.
·>В асинхронном, как я понял, оно кидает исключение, которое ловится в результат таска. В синхронном то же исключение вываливается напрямую.
·>Неясно зачем для этого было создавать какой-то специальный API. Наверно, просто для универсальности.

Не обязательно.
Если ты читал есть
cts.Cancel(); if (token.IsCancellationRequested)


То есть ты должен либо опрашивать, если IsCancellationRequested == true
вызвать ThrowIfCancellationRequested

if (token.IsCancellationRequested)   
    throw new OperationCanceledException(token);

https://learn.microsoft.com/ru-ru/dotnet/api/system.threading.cancellationtoken.throwifcancellationrequested?view=net-8.0

То есть нужно с некоторой периодичностью опрашивать token
https://learn.microsoft.com/ru-ru/dotnet/standard/threading/cancellation-in-managed-threads

Просто его можно пробросить в кучу задач в качестве параметра и отменить эти задачи. Вот простой смысл
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.