Size: a a a

2021 February 25

AE

Alexander E. in pro.cxx
и вот возникает у меня простой вопрос - будет быстрее работать вариант с корутинами или нет? что-то мне подсказывает, что те люди, которые с ходу ответят "быстрее" или "так же быстро" -- то им фиолетово, сколько будет стартовать поток, с какими настройками, как это внутри работает
источник

AE

Alexander E. in pro.cxx
у них возможно без потерь произошло преобразование кода из более запутанного в менее запутанный. для других вариантов использования, типа когда ты лично бережешь потоки, а-ля тредпул, чтобы экономить на их старте, свои точки синхронизации - там не вполне понятно, кто гарантирует или вообще понимает в мелочах, что это будет быстрее или вообще что будет сгенерено
источник

SK

Stas Koynov in pro.cxx
да просто захотелось им ввести вот и ввели. нас же не заставляют на них молиться... в эмбедете без них жили и нормально все работало. все как писали конечные автоматы на массиве функций так и пишут. щас придут мол теперь массив не нужен то се... но имхо у меня вопросов сколько вызовет оверхеда код типа:
SM_TCP_IP[state](socket); не возникает от слова совсем
тогда как с коорутинами он как бы встает.
источник

CD

Constantine Drozdov in pro.cxx
Alexander E.
и вот возникает у меня простой вопрос - будет быстрее работать вариант с корутинами или нет? что-то мне подсказывает, что те люди, которые с ходу ответят "быстрее" или "так же быстро" -- то им фиолетово, сколько будет стартовать поток, с какими настройками, как это внутри работает
пусть поправят меня более опытные товарищи, но вроде плюсовые корутины делались из расчёта написания однопоточной программы
источник

CD

Constantine Drozdov in pro.cxx
сможет ли компилятор раскрутить это - вопрос к компиляторщикам
источник

O

Ofee in pro.cxx
Alexander E.
и вот возникает у меня простой вопрос - будет быстрее работать вариант с корутинами или нет? что-то мне подсказывает, что те люди, которые с ходу ответят "быстрее" или "так же быстро" -- то им фиолетово, сколько будет стартовать поток, с какими настройками, как это внутри работает
Корутины в плане производительности и сложности отладки должны быть сопоставимы с коллбеками. Потоки к корутинам отношение имеют столь же косвенное, как и к коллбекам. Код разве что должен стать менее шумным
источник

AE

Alexander E. in pro.cxx
Constantine Drozdov
пусть поправят меня более опытные товарищи, но вроде плюсовые корутины делались из расчёта написания однопоточной программы
я не эксперт, но кажется, что самый цимус как раз в friendly awaiting on resource и этих всяких yield. и многопоточный код начинает выглядеть например как однопоточный. а однопоточный и так +- как однопоточный выглядит
источник

O

Ofee in pro.cxx
Alexander E.
я не эксперт, но кажется, что самый цимус как раз в friendly awaiting on resource и этих всяких yield. и многопоточный код начинает выглядеть например как однопоточный. а однопоточный и так +- как однопоточный выглядит
Всяческие генераторы и стейтмашины однопоточны обычно, корутины в том числе и для них могут использоваться
источник

AS

Anatoly Shirokov in pro.cxx
Alexander E.
я не эксперт, но кажется, что самый цимус как раз в friendly awaiting on resource и этих всяких yield. и многопоточный код начинает выглядеть например как однопоточный. а однопоточный и так +- как однопоточный выглядит
Корутины и многопоточка - ортогональные вещи
источник

AE

Alexander E. in pro.cxx
Ofee
Корутины в плане производительности и сложности отладки должны быть сопоставимы с коллбеками. Потоки к корутинам отношение имеют столь же косвенное, как и к коллбекам. Код разве что должен стать менее шумным
ну как) я думаю, зависеть должно от того, в колбэках лямбды ли али нет. в первом случае непонятно имя функции, но понятна сигнатура, во втором и имя, и сигнатура зачастую прошиты явно. взять какой-нибудь openssl. Вы говорите, я так понимаю, о том, что "а теперь релаксируем знание о сигнатуре тоже" +- (разве там есть гарантии) и скажем, что будет сопоставимо.. информации, мне кажется, у меня еще меньше стало, чем было
источник

A

Alex in pro.cxx
а какой юз кейс у корутин в синхронном коде?
источник

A

Assasin in pro.cxx
Alex
а какой юз кейс у корутин в синхронном коде?
генераторы
источник

AE

Alexander E. in pro.cxx
Anatoly Shirokov
Корутины и многопоточка - ортогональные вещи
ну не знаю. вот мы открываем http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html и окажется, что там указано про ограничения на потоки исполнения и про асинхронный код. Возможно, кто-то скажет, что "а давайте использовать в однопоточном коде" - добавлять асинхронщину в вызовах
источник

O

Ofee in pro.cxx
Alexander E.
ну как) я думаю, зависеть должно от того, в колбэках лямбды ли али нет. в первом случае непонятно имя функции, но понятна сигнатура, во втором и имя, и сигнатура зачастую прошиты явно. взять какой-нибудь openssl. Вы говорите, я так понимаю, о том, что "а теперь релаксируем знание о сигнатуре тоже" +- (разве там есть гарантии) и скажем, что будет сопоставимо.. информации, мне кажется, у меня еще меньше стало, чем было
Под сложностью отладки я в первую очередь имел ввиду понимание хода исполнения в рантайме. С коллбеками это сложно. С корутинами вряд ли станет лучше. Но зато код станет читаемее. О сигнатуре или явности описания мне нечего сказать — нужен практический опыт
источник

AE

Alexander E. in pro.cxx
тогда я ничего не понимаю, где проще стало
источник

CD

Constantine Drozdov in pro.cxx
моё интуитивное понимание говорит, что корутины всё-таки про объектные потоки данных, но я могу ошибаться
источник

O

Ofee in pro.cxx
Alex
а какой юз кейс у корутин в синхронном коде?
Отдать длительную сетевую операцию на откуп системе, а самому продолжить работать в единственном потоке до получения ответа? А ещё, я видел интересный доклад, где асинхронные операции, например... позволяют префетчить данные из оперативной памяти в кэш процессора более эффективно — это всё однопоточный код
источник

O

Ofee in pro.cxx
Alexander E.
тогда я ничего не понимаю, где проще стало
Не нужно множества вложенных лямбд-коллбеков, это ужасно вредит читаемости кода
источник

A

Alex in pro.cxx
Ofee
Отдать длительную сетевую операцию на откуп системе, а самому продолжить работать в единственном потоке до получения ответа? А ещё, я видел интересный доклад, где асинхронные операции, например... позволяют префетчить данные из оперативной памяти в кэш процессора более эффективно — это всё однопоточный код
Но это же многопоточный сценарий! Просто второй поток вы не порождали явно, но очевидно, что он есть.
источник

AE

Alexander E. in pro.cxx
Ofee
Отдать длительную сетевую операцию на откуп системе, а самому продолжить работать в единственном потоке до получения ответа? А ещё, я видел интересный доклад, где асинхронные операции, например... позволяют префетчить данные из оперативной памяти в кэш процессора более эффективно — это всё однопоточный код
спасибо за наводку
источник