Re[2]: [trick] await in C++ based on Stackful Coroutines from Boost.Coroutine
От: Evgeny.Panasyuk Россия  
Дата: 03.07.13 19:41
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Мне всё-таки кажется, что это всё мертворождённо. На современных многоядерных процессорах можно не изобретать псевдо-потоки,

Ш>а проще и выгодней пользоваться настоящей многопоточностью с настоящим параллелизмом.

А тут дело не только в псевдо/green-потоках.
Весь шум из-за того, что await это один из способов распрямить код использующий результаты "асинхронных" вызовов без блокирования вызывающего потока, сделать implicit continuations. Сами вызовы необязательно выполняются в одном потоке — в примере выше по async может использоваться пул реальных потоков.

Саттер, в последнем выступлении на C9, показывал примеры асинхронного кода WinRT и сказал что возможно в C++ добавят await.
Я не то чтобы совсем против await'а, но я в первую очередь предпочту сначала нормальные stackful coroutines — они намного мощнее await'а и как показывает пример выше на них можно легко реализовать как await-like код (для чего собственно я и сделал proof-of-concept), так и много чего другого.
Во-вторых, имхо, добавить stackful coroutines в ISO будет легче, чем await. В Boost.Coroutine сейчас довольно лаконичный интерфейс. А функции с await наверняка будут иметь много ограничений, либо спецификация будет громоздкой (C++ это всё-таки не C#).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.