170 похожих чатов

А есть какойто трейдоф между текущими корутинами сo_await и то

что предлагается в пине про libunifex? Я пошёл по ссылке, но там критикуется аллокация, а почему её нельзя избежать я не увидел, но я всё не читал.

18 ответов

32 просмотра

Ну и вторая проблема что для корутин нужны практически точно такие же абстракции с практически таким же кодом(просто сравни cppcoro и libunifex) Поэтому и предложение про колбеки, а корутины пусть просто используют этот же код

Alex-Noname Автор вопроса
Arelav
Ну и вторая проблема что для корутин нужны практич...

но зачем писать колбеки, когда во всех других языках делают для удобства await?

А есть статьи на эту тему и когда можно было бы всегда избежать?

Слава
А есть статьи на эту тему и когда можно было бы вс...

в стандарте написано когда можно избежать, а вот как вычислить это - загадка компилятору. Но во всяком случае для стандартных корутин(если они когда то будут), можно захардкодить их поведение

Слава
А есть статьи на эту тему и когда можно было бы вс...

Теоритически можно избежать всегда если известен тип и конечный фрейм, тот кто уже функция а не корутина http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0981r0.html Вот кое что из пропозала выше кст https://github.com/GorNishanov/coroutines-ts/issues/37 Кажется описанный способ работает, но вот компиляторы не слишком любят это оптимизировать как я понимаю

Alex Noname
но зачем писать колбеки, когда во всех других язык...

потому что на самом низком уровне корутины не то чтобы есть

учитывая что формально функции - частный случай корутин...

Kelbon
учитывая что формально функции - частный случай ко...

может и частый но редко используемый в своё время

disba1ancer
может и частый но редко используемый в своё время

во времена goto наверное очень часто использовали, а потом во время отказа от goto как то и забыли про такую фичу

Kelbon
во времена goto наверное очень часто использовали,...

мб, но всё равно нам нужно передать пару указателей даже на корутину, один на точку возобновления, второй на состояние

Arelav
Теоритически можно избежать всегда если известен т...

Классический пример когда нельзя избежать - это рекурсия с глубиной неизвестной на компайлтайме (или глубже чем инлайнер отработал). Кажется был пропозал корутин, который просто не поддерживал такой сценарий и мог гарантировать отсутствие аллокаций, но он не прошел. Таким образом в плюсах нельзя гарнтировать отсутствие аллокаций и нельзя расчитывать на это. Оптимизации компилятора это конечно хорошо, но как это должно влиять на концепцию libunifex?

Ну всм влияет на то, что абстракцию делают для чейнинга функторов, а не корутин

Arelav
Ну всм влияет на то, что абстракцию делают для чей...

То есть претензия в том, что корутины не являются first class citizen? А какие альтернативы? Классический подход в стиле asio на сколько я себе это представляю оперирует корутинами почти точно так же. Разве нет?

Alex-Noname Автор вопроса
magras
Классический пример когда нельзя избежать - это ре...

а, рекурсия - проблемка. Можно было бы заставить программиста как то самому оборачивать в самрт поинтер. Но видимо в пропозале решили иначе.

magras
То есть претензия в том, что корутины не являются ...

Я не понимаю в чём вопрос по-моему в закрепе вполне ясно написано почему авторы делают так, а не чисто корутинный вариант Там абзац текста по сути всего лишь Совсем классический подход с асио это когда ты пишешь по сути конечный автомат на колбеках вручную?

> Я не понимаю в чём вопрос по-моему в закрепе вполне ясно написано почему авторы делают так, а не чисто корутинный вариант > Там абзац текста по сути всего лишь Возможно я потерял нить рассуждений. > Совсем классический подход с асио это когда ты пишешь по сути конечный автомат на колбеках вручную? Да. В asio все построено на колбэках и корутины умеют встраиваться в такой интерфейс. Я не трогал libunifex, но я не вижу почему оно будет отличаться, так как они по большому счету оперируют теми же коллбэками (чуть более сложными из-за того что их там 3, но принципиальных отличий я не вижу).

magras
> Я не понимаю в чём вопрос по-моему в закрепе впо...

Нить обсуждений была, насколько я не понимаю, почему пропозал предлагает sender reciever вместо task, если так можно выразиться И ответ на него: 1) потому что корутины иногда имеют слабо подконтрольный разработчику интерфейс 2) sender могут быть awaitable => нет проблем с тем чтобы реализовать task в их терминах Да оно и не отличается особо, sender/receiver спокойно встраиваются в колбечные интерфейсы скажем так

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта