Пытаюсь понять работу сопрограмм в с++17. Что это такое и по что оно нужно - более-менее понятно из ответа к вопросу Сопрограммы в С++
Однако, после рассмотрения ответа к тому вопросу, а так же примера использования сопрограмм, у меня возник ряд вопросов.
Обязана ли сопрограмма возвращать фьючер или же она может не возвращать ничего, а просто иметь внутри себя co_await, co_yield или co_return? Все, что возвращает фьючер, есть сопрограмма?
Каким образом происходит приостановка сопрограммы? Это целиком и полностью работа компилятора по разворачиванию co_await или же дополнительно к остальному коду предъявляются какие-то требования?
При запуске следующего кода гарантируется ли порядок вывода в консоль значений? Если да, то правильно ли я понимаю, что программа на каждой итерации цикла будет ждать завершения операции вывода? Можно ли в это время выполнять другую полезную работу? Если можно, то хочется увидеть пример.
for (int i = 0; i < 10; ++i)
{
co_await AsyncWrite(i); // Пусть AsyncWrite асинхронно
// выводит переданное ей число в консоль
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости