[personal profile] chabapok
В С++20 появились корутины

task<int> foo(){ ... }

int t = co_await foo();


Штука удобная, а стандарт написан так, что реализацию можно подставить какую хочешь. Это удобно. Но основная проблема - говорят, что человек может одновременно держать в голове 5..6 сущностей, программист - 7..8. Для реализации движка корутин нужно около 12.

Так с наскоку разобраться, как оно там под капотом работает, тяжело. Вроде все понятно, начинаешь делать - начинаются странности. При помощи ютуб - более-мене реально, но тоже сложно.

Я попытался сделать asyc/await движок с qt-шной очередью событий. (знаю про qcoro, но мне хочется понять, как оно сделано. А еще в qcoro нет await_all/await_first, и некоторые другие вещи не поддержаны). За 1 вечер нормально движок не сделать.

Date: 2025-02-24 09:12 am (UTC)
lxe: (Default)
From: [personal profile] lxe
Пчаль. Я думал, на файбрах сделали, а теперь есть два механизма с нетривиальным взаимодействием.

June 2025

S M T W T F S
1 23 456 7
891011121314
15161718192021
22232425262728
2930     

Page Summary

Style Credit

Expand Cut Tags

No cut tags