Войти
ПрограммированиеФорумОбщее

С++ корутины, начальный уровень (комментарии) (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
11:55, 8 ноя 2022

=A=L=X=
В сизарешеткой примерно так же.

#16
12:16, 8 ноя 2022

ronniko
> Где реально это нужно и без корутинов никак ?
Если ты понимаешь многопоточный код написаный без корутин, то они тебе не нужны.
А вот микротаски на них делать удобно, главное чтоб тредпул не тормозил на большом количестве тасков.

=A=L=X=
> Таким образом await как ключевое слово сперва уходит в сон, а после пробуждения
> проверяет не содержит ли Promise который получился информации об исключении - и
> если да, то регенерирует это исключение в текущей функции. Иначе же возвращает
> результат сохранённый в Promise.
Вот это все на С++ надо писать руками и логика может быть какой угодно.

#17
(Правка: 13:47) 13:46, 8 ноя 2022

/A\
> Вот это все на С++ надо писать руками и логика может быть какой угодно

Но суть ведь не в том, чтоб писать это руками, суть ведь в том, чтоб воспользоваться готовым библиотечным бакэндом, лишь пописывая async / await.

Смысл будет тогда, когда в библиотеке будет готовый бакэнд, охватывающий большинство областей, где есть ожидание - сеть/HTTP/WebSocket, межпроцессные каналы, взаимодействие с БД, таймеры/ожидания.

#18
13:51, 8 ноя 2022

Dmitry_Milk
Только для с++23 пока никаких предложений по этим библиотекам нет, только обещания. Так что либо ждать 5-10 лет, либо самому писать)

#19
(Правка: 15:04) 15:00, 8 ноя 2022

Но суть ведь не в том, чтоб писать это руками, суть ведь в том, чтоб воспользоваться готовым библиотечным бакэндом, лишь пописывая async / await.

Вот она вся суть современных с++ программистов.
Кто бы написал все, а я уже буду рулить.
https://www.youtube.com/watch?v=ZOjT3f39RVc

#20
(Правка: 17:22) 17:21, 8 ноя 2022

Dmitry_Milk
> Смысл будет тогда, когда в библиотеке будет готовый бакэнд

Ну чтобы бекенд появился нужна поддержка со стороны языка.
То, что зачали - похвально.
Как STL под это прогнут в будущем это придётся ждать.
Но вообще я думаю, что эта фишка в плюсах будет намного меньше востребована, чем async в JavaScript просто потому что от классического блокирующего программирования никто не будет принуждать отказываться. Это в JavaScript чтобы кнопочки не тормозили на нажатиях всю остальную страничку надо без альтернатив уходить в неблокирующее ожидание. А в плюсах в подавляющем числе случаев аналогичных проблем просто нет.

#21
18:41, 8 ноя 2022

Ну наконец то можно будет делать стратегии с миллионами юнитов на микро-тасках.

#22
18:44, 8 ноя 2022

gamedevfor
Вот только с сериализацией будут проблемы…

#23
18:51, 8 ноя 2022

BUzer
> Вот только с сериализацией будут проблемы…

Да какие проблемы? Хранить юниты как struct, struct-ы в массиве, скопом move to file / db /...

#24
19:29, 8 ноя 2022

=A=L=X=
> Это в JavaScript чтобы кнопочки не тормозили на нажатиях всю остальную
> страничку надо без альтернатив уходить в неблокирующее ожидание. А в плюсах в
> подавляющем числе случаев аналогичных проблем просто нет

В Питоне тем не менее вполне себе переходят на async/await, кучу новых фреймворков с поддержкой async-операций уже понаделали взамен не умеющих старых, несмотря на то, что потоки тоже есть (правда они обмазаны тормозящим их GIL, что стимулирует избавляться от них).

#25
(Правка: 19:35) 19:33, 8 ноя 2022

В Питоне тем не менее вполне себе переходят на async/await, кучу новых фреймворков с поддержкой async-операций уже понаделали взамен не умеющих старых

Они питюню хотят ускорить, вот и пихают корутины.
Последний питон на 30% ускорился.

Мне бы асм на 30% ускорить :)))

#26
19:40, 8 ноя 2022

ronniko
> Мне бы асм на 30% ускорить

Не пиши сортировку пузырьком на асм-е.

#27
23:47, 8 ноя 2022

ronniko
> Мне бы асм на 30% ускорить

Читай интеловские руководства по оптимизации под out-of-order. Или Агнера Фога. Может быть и больше 30% выжмешь, когда правильно разорвешь зависимости, уложишься в линейки кэша и подстроишься под предсказатель переходов.

ronniko
> Вот она вся суть современных с++ программистов.
> Кто бы написал все, а я уже буду рулить.

Ты еще скажи, что не вызываешь из своего асм-кода функции операционной системы, а сам посекторно читаешь диски и побайтно программируешь 3D прямо на уровне железа.

#28
8:00, 9 ноя 2022

gamedevfor
> Да какие проблемы? Хранить юниты как struct, struct-ы в массиве, скопом move to
> file / db /...
Да, но как сериализовать корутину, которая заморожена где-то в середине своего процесса выполнения?
Ну кроме как всякими хаками, которые сделают сейвы несовместимыми даже между разными версиями одного компилятора, не говоря уж о разных платформах.

#29
9:19, 9 ноя 2022

>/A\
Сорри с С++ мало знаком но вроде там нет проблем с потоками? Зачем там корутины?

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее