Size: a a a

2020 June 17

ПК

Побитый Кирпич... in pro.cxx
Alex
Считаю, что заблокировать на 50-100 мс не зазорно, если альтернатива - наворачивание сложной и потенциально хрупкой синхронизации. Но в целом да, контраргументы разумные.
Как раз корутины надеюсь позволят писать как то так:
download_button.on_clicked([]()
{
   co_await show_progress_bar();
   auto download_future = download(file_url);
   auto file_content = co_await download_future;
   co_await hide_progress_bar();
});
И код нормальный, и гуй не блочится
источник

OS

Oleksandr Senkovych in pro.cxx
Побитый Кирпич
Как раз корутины надеюсь позволят писать как то так:
download_button.on_clicked([]()
{
   co_await show_progress_bar();
   auto download_future = download(file_url);
   auto file_content = co_await download_future;
   co_await hide_progress_bar();
});
И код нормальный, и гуй не блочится
Я пока не читал но осуждаю, но код точно нормальный будет? Не нужно будет писать сотню бойлерплейта а-ля
std::decay_t<decltype(std::declval<async_function()>>>>>
источник

OS

Oleksandr Senkovych in pro.cxx
а то я знаю эти ваши "код нормальный будет"
источник

A

Alex in pro.cxx
Меня больше беспокоит, как бы корутины не превратились в спагетти-код, которые непонятно когда и куда заходит и выходит
источник

A

Alex in pro.cxx
тоже не читал, но осуждаю)
источник

ПК

Побитый Кирпич... in pro.cxx
Oleksandr Senkovych
Я пока не читал но осуждаю, но код точно нормальный будет? Не нужно будет писать сотню бойлерплейта а-ля
std::decay_t<decltype(std::declval<async_function()>>>>>
С future не уверен, но с нормальным асинхронным фреймворком (или с гуй фреймворком который сам предоставит тебе корутины) должно быть так или типа того.
источник

m

magras in pro.cxx
Побитый Кирпич
Как раз корутины надеюсь позволят писать как то так:
download_button.on_clicked([]()
{
   co_await show_progress_bar();
   auto download_future = download(file_url);
   auto file_content = co_await download_future;
   co_await hide_progress_bar();
});
И код нормальный, и гуй не блочится
Такое будет работать только если event loop GUI будет поддерживать корутины. Но не понятно зачем в примере await'ить прогресс бар, и прогресс бар не будет обновляться в процессе загрузки.
источник

ПК

Побитый Кирпич... in pro.cxx
magras
Такое будет работать только если event loop GUI будет поддерживать корутины. Но не понятно зачем в примере await'ить прогресс бар, и прогресс бар не будет обновляться в процессе загрузки.
Это типа "бесконечно крутящийся прогресс бар как на мобилках".
источник

ПК

Побитый Кирпич... in pro.cxx
Может там зря await-ы написал, да
источник

AT

Alexey Tkachenko in pro.cxx
Немного оффтопа, но довольно близко к теме. Есть прикольная статья о ненормальном использовании await в дотнете. Первая реакция обычно отторжение, но на мысли наталкивает: https://devblogs.microsoft.com/pfxteam/await-anything/
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
Меня больше беспокоит, как бы корутины не превратились в спагетти-код, которые непонятно когда и куда заходит и выходит
спагетти код это когда ты такое попробуешь на boost.asio сделать, с callback в качестве продолжения. Вот там чем больше асинхронных действий, тем больше лапшы, а тут всё можно сделать линейно, с тем же поведением.
источник

ПК

Побитый Кирпич... in pro.cxx
magras
Такое будет работать только если event loop GUI будет поддерживать корутины. Но не понятно зачем в примере await'ить прогресс бар, и прогресс бар не будет обновляться в процессе загрузки.
Кстати, надеюсь что в Qt запилят поддержку корутин, чтоб можно было такой код писать в слотах. Щас сигнал слоты - та же лапша по сути.
источник

ПК

Побитый Кирпич... in pro.cxx
Вот тогда заживём 😊
источник

A

Alex in pro.cxx
Если их нужно как-то в цепочку соединять - лапша, но я с таким не сталкивался. Простая одноуровневая асинхронность ощущения лапши у меня не вызывает.
источник

AT

Alexey Tkachenko in pro.cxx
Лучше линейная лапша, чем  callback hell
источник

АР

Андрей Руссков... in pro.cxx
Побитый Кирпич
Кстати, надеюсь что в Qt запилят поддержку корутин, чтоб можно было такой код писать в слотах. Щас сигнал слоты - та же лапша по сути.
там кстати можно обернуть так, чтобы "кидать" лямбду на выполнение в другой поток
источник

АР

Андрей Руссков... in pro.cxx
хотя последний Qt мб и без оборачивания умеет
источник

АР

Андрей Руссков... in pro.cxx
ну т.е. можно написать почти линейно
источник

ПК

Побитый Кирпич... in pro.cxx
Андрей Руссков
там кстати можно обернуть так, чтобы "кидать" лямбду на выполнение в другой поток
там это где?
источник

АР

Андрей Руссков... in pro.cxx
ну в Qt'е
источник