ExpertiDict

C++ · Avançado · Inglês · Técnico

coroutine

ˈkoʊ.ɹuː.tiːnsubstantivo

Função do C++20 que pode suspender sua execução e retomá-la depois, usando co_await, co_yield ou co_return. O estado fica guardado em um frame, normalmente alocado no heap.

Onde usar

Usada em geradores, I/O assíncrono e tarefas cooperativas. A linguagem só oferece o mecanismo; o tipo de retorno com promise_type precisa vir de uma biblioteca ou ser escrito à mão.

Em código

// C++23, #include <generator>
std::generator<int> contar(int n) {
  for (int i = 0; i < n; ++i)
    co_yield i;
}
for (int x : contar(3)) std::cout << x;

Exemplos

This function is a coroutine because it uses co yield.

Essa função é uma coroutine porque usa co_yield.

The coroutine frame lives on the heap by default.

O frame da coroutine fica no heap por padrão.

Cuidado

O C++20 não traz um tipo gerador pronto, pois std::generator só chegou no C++23; sem uma biblioteca, o código fica verboso.

Sinônimos

corrotina

Veja também

Todos os termos de C++