Spec-Zone.ru › Tokio

Функция yield_now

pub async fn yield_now()
Доступна только при включённой функции crate feature rt.

Уступает выполнение среде выполнения Tokio.

Задача уступает выполнение, ожидая yield_now(), и может возобновить работу, когда это будущее завершится (не возвращая результат). Текущая задача будет повторно добавлена в очередь ожидающих задач в её конец. Будут запланированы любые другие ожидающие задачи. Для продолжения работы задачи не требуется никакого другого пробуждения.

См. также пример использования в модуле задач.

Что не гарантируется

Эта функция может не уступить выполнение вплоть до исполнителя, если выше неё в стеке вызовов есть специальные комбинаторы. Например, если у tokio::select! другая ветвь завершается во время того же опроса, что и yield_now(), уступка выполнения не будет распространена вплоть до среды выполнения.

Как правило, не гарантируется, что среда выполнения будет вести себя так, как вы ожидаете, выбирая, какую задачу запланировать следующей после вызова yield_now(). В частности, среда выполнения может сразу же снова опросить только что выполнявшуюся задачу yield_now(), не опрашивая предварительно другие задачи. Например, среда выполнения не будет запускать драйвер ввода-вывода между каждым опросом задачи, и поэтому среда выполнения может сразу же снова опросить текущую задачу, даже если есть другая задача, которая могла бы продвинуться вперёд, ожидая уведомления от драйвера ввода-вывода.

В целом, изменения порядка, в котором среда выполнения опрашивает задачи, не считаются несовместимыми изменениями, и ваша программа должна работать корректно независимо от порядка опроса задач средой выполнения.

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/task/fn.yield_now.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API