Size: a a a

2021 July 02

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
это "проклятие знания"
источник

O

Ofee in C++ Together 2.0
Так он и не должен выглядеть очень. Его существование – это как раз проблема. И ты не поверишь, для её решения придумали два способа...
источник

O

Ofee in C++ Together 2.0
Да я в курсе, объяснять-то не легче стало. Тут, кажется, если у собеседника нет интуиции на хороший код, поможет только опыт. Я думаю, дальше будет так: Рой потыкает это, разочаруется и вообще забьёт на задачу, а то и на плюсы. Потом однажды от скуки почитает, что такое корутины и как они внутри работают и у него настанет момент озарения "о, а можно было так!"
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
ну вот поэтому я особо с роем не спорю, пусть шишек набьет, а потом сам придет к чему-то получше
источник

VK

Valentin Kornienko in C++ Together 2.0
Я тут на огонек с корутинами пришёл. Успел на раздачу свежих?
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
да
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
вон там выше посмотри
источник

VK

Valentin Kornienko in C++ Together 2.0
Отлично, х
источник

VK

Valentin Kornienko in C++ Together 2.0
Иду смотреть
источник

VK

Valentin Kornienko in C++ Together 2.0
Имею опыт тыкания корутин на железке с 512 FLASH и 64 КБ RAM. И да, это не protothreads библиотека. Корутины из 20х плюсов😄
источник

NK

Nikolay Kononov in C++ Together 2.0
и что?
источник

VK

Valentin Kornienko in C++ Together 2.0
Вы ошибаетесь тут. Смотрите. Сами корутины это просто механизм приостановки выполнения функции и сохранения ее состояния, не более. Никакой многопоточности они под капотом не имеют, это все необходимо уже дописывать самому, если необходимо, т.е. описывать свой Awaitable+ promise type.
Идея в том, что вы можете приостановить выполнение функции в четко заданном месте и дальше уже продолжить выполнение (разбудить корутину) там, где вам нужно. Это может быть новый поток, это может быть обработчик прерывания, это может быть основной поток, что угодно. Для пробуждения сопрограммы у вас есть coroutine handle которому вы делаете resume();. А где и как выполнился этот resume- уже дело десятое.
источник

RM

Roy Mustang in C++ Together 2.0
Это понятное дело, речь о том, что предлагают корутины вместо тредпула использовать
источник

VK

Valentin Kornienko in C++ Together 2.0
Я не думаю, что вам предлагали тредпул выкинуть и переписать все на корутины
источник

RM

Roy Mustang in C++ Together 2.0
Так какой смысл использовать корутины там где в них нет толку?
источник

RM

Roy Mustang in C++ Together 2.0
Зачем использовать корутины в Job System? У меня нет необходимости приостанавливать выполнение задачи
источник

VK

Valentin Kornienko in C++ Together 2.0
Скорее имелось ввиду реализовать Awaitable для std::future  чтобы можно было выполнить что-то вида:
co_await LongOperation;, а под капотом вычисление операции выполнится в отдельном потоке, после чего выполнение вернётся в исходную точку
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
есть, кстати, тредпулы на корутинах
источник

VK

Valentin Kornienko in C++ Together 2.0
Тут идея в чем, вы не задачу приостанавливаете, а сохраняете состояние клиента, который ждёт результат задачи
источник

VK

Valentin Kornienko in C++ Together 2.0
Да, естественно, это не взаимозаменяемые понятия
источник