Cancelamento
Descartar uma future implica que ela nunca pode ser consultada novamente. Isso Ă© chamado de cancelamento e pode ocorrer em qualquer ponto de await
. Cuidado Ă© necessĂĄrio para garantir que o sistema funcione corretamente mesmo quando as futures sĂŁo canceladas. Por exemplo, nĂŁo deve travar ou perder dados.
Speaker Notes
This slide should take about 18 minutes.
-
O compilador nĂŁo ajuda com a segurança do cancelamento. VocĂȘ precisa ler a documentação da API e considerar qual estado sua
async fn
mantém. -
Diferentemente de
panic
e?
, o cancelamento faz parte do fluxo de controle normal (vs tratamento de erros). -
O exemplo perde partes da string.
-
Sempre que o ramo
tick()
termina primeiro,next()
e seubuf
sĂŁo descartados. -
LinesReader
pode ser tornado seguro para cancelamento tornandobuf
parte da estrutura:
-
-
Interval::tick
Ă© seguro para cancelamento porque mantĂ©m o controle de se um tick foi âentregueâ. -
AsyncReadExt::read
Ă© seguro para cancelamento porque ou retorna ou nĂŁo lĂȘ dados. -
AsyncBufReadExt::read_line
é semelhante ao exemplo e não é seguro para cancelamento. Consulte sua documentação para detalhes e alternativas.