C++ · Avançado · Inglês · Técnico
coroutine
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