Outils pour utilisateurs

Outils du site


lang:cpp:coroutine

Ceci est une ancienne révision du document !


co_await

#include <iostream>
#include <experimental/generator>
 
std::experimental::generator<int> loop(int iterations)
{
  for (int i = 0; i < iterations; i++)
  {
    co_yield i;
  }
}
 
int main()
{
  for (int i : loop(100))
  {
    std::cout << i << std::endl;
  }
}

co_return et co_await

#include <future>
#include <iostream>
 
std::future<void> t()
{
   return std::async([]() { std::cout << "I" << std::endl; });
}
 
std::future<void> foobar()
{
   std::cout << " First call !\n";
   co_await t();
   std::cout << " Still first call !\n";
   co_await t();
   std::cout << " Only after resumed !\n";
}
 
void tt()
{
   auto ttt = foobar();
   for (int i = 0; i < 10; i ++)
      std::cout << i << std::endl;
   ttt.wait();
}
 
int main()
{
   tt();
}
lang/cpp/coroutine.1573813270.txt.gz · Dernière modification : 2019/11/15 11:21 de root