Внутренности сопрограмм с++

143
08 февраля 2018, 17:22

Пытаюсь понять работу сопрограмм в с++17. Что это такое и по что оно нужно - более-менее понятно из ответа к вопросу Сопрограммы в С++

Однако, после рассмотрения ответа к тому вопросу, а так же примера использования сопрограмм, у меня возник ряд вопросов.

  1. Обязана ли сопрограмма возвращать фьючер или же она может не возвращать ничего, а просто иметь внутри себя co_await, co_yield или co_return? Все, что возвращает фьючер, есть сопрограмма?

  2. Каким образом происходит приостановка сопрограммы? Это целиком и полностью работа компилятора по разворачиванию co_await или же дополнительно к остальному коду предъявляются какие-то требования?

  3. При запуске следующего кода гарантируется ли порядок вывода в консоль значений? Если да, то правильно ли я понимаю, что программа на каждой итерации цикла будет ждать завершения операции вывода? Можно ли в это время выполнять другую полезную работу? Если можно, то хочется увидеть пример.

    for (int i = 0; i < 10; ++i) 
    {
        co_await AsyncWrite(i);   // Пусть AsyncWrite асинхронно
                                  // выводит переданное ей число в консоль
    }
READ ALSO
Реализовать функцию объединения двух wav mono файлов в один wav stereo файл

Реализовать функцию объединения двух wav mono файлов в один wav stereo файл

Задание:"Реализовать функцию объединения двух mono файлов в один stereo файл, где первый файл является левым каналом, а второй правым каналом выходного...

198
Поиска в бинарном файле по маске

Поиска в бинарном файле по маске

Есть бинарный файлВ нём нужно найти последовательности байтов по маске:

168
Как изменить размер спрайта directx 9?

Как изменить размер спрайта directx 9?

Как в directx 9 можно сменить размер спрайта ? Точней растянуть его на все окно программыИбо создаю текстуру и в размере ставлю вот эти параметры:

168
Не создаётся процесс через CreateProcess()

Не создаётся процесс через CreateProcess()

Есть некий процесс с параметрами, который должен корректно запускаться и останавливаться из NT-сервисаПопробовал два варианта его запуска...

193