ExpertiDict

Rust · Avançado · Inglês · Técnico

Waker

/ˈweɪkɚ/substantivo

Handle que uma tarefa async entrega ao executor para ser acordada. Quando o recurso fica pronto, quem o controla chama wake() e o executor faz o poll de novo.

Onde usar

Aparece ao implementar Futures à mão e executores. Ele vem dentro do Context passado ao poll.

Em código

use std::task::{Context, Waker};
let w = Waker::noop();
let mut cx = Context::from_waker(w);
// ao ficar pronta, a tarefa chama
// waker.wake() e o executor refaz o poll
let _ = &mut cx;

Exemplos

Store the waker and call wake when data arrives.

Guarde o waker e chame wake quando chegarem dados.

The task hung because nobody called the waker.

A tarefa travou porque ninguém chamou o waker.

Cuidado

Guarde sempre o waker mais recente: sem um wake() a tarefa nunca acorda e fica parada em silêncio.

Veja também

Todos os termos de Rust