![](https://habrastorage.org/files/040/6ca/59e/0406ca59e7c243e1bffae413d1d40947.png)
Обзор топологий глубоких сверточных нейронных сетей
18 мин
![](https://habrastorage.org/files/040/6ca/59e/0406ca59e7c243e1bffae413d1d40947.png)
Пользователь
Task
и унаследованный от него тип Task
. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.CancellationTokenSource
— создаёт маркёры отмены (свойство Token
) и обрабатывает запросы на отмену операции (перегруженные методы Cancel
/CancelAfter
).CancellationToken
— маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойства IsCancellationRequested
, регистрацией callback-функции (через перегруженный метод Register
), ожиданием на объекте синхронизации (свойство WaitHandle
).OperationCanceledException
— исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов метода CancellationToken. ThrowIfCancellationRequested
.CancellationToken
является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken
, исключения OperationCanceledException
специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.