Size: a a a

Конференция C++ Russia

2021 July 18

I

Ioann_V in Конференция C++ Russia
Так если параллельность, почему не просто тред пул?
источник

АР

Андрей Руссков... in Конференция C++ Russia
так у тебя шедулер на тред пуле
источник

АР

Андрей Руссков... in Конференция C++ Russia
корутины дают быстрое переключение контекста
источник

АР

Андрей Руссков... in Конференция C++ Russia
а уже сами треды могут быть в системе выделены как хочется. Ну, с поправкой на то, что запускать корутины поверх тредпула где тредов много больше ядер тоже не шибко много выиграет
источник

AP

Antony Polukhin in Конференция C++ Russia
корутины != однопоточночть

Всё зависит от шедулера, он может быть многопоточным
источник

AP

Antony Polukhin in Конференция C++ Russia
И линейный, читаемый код
источник

АР

Андрей Руссков... in Конференция C++ Russia
из моей практики не все ценят линейность распределенного кода. А вот быстрое переключение контекста неоспоримое и замеряемое благо
источник

AP

Antony Polukhin in Конференция C++ Russia
Кажется, что мой ближайший доклад про анатомию асинхронных движков, будет прям людям в тему :)
источник

АР

Андрей Руссков... in Конференция C++ Russia
уверен
источник

АР

Андрей Руссков... in Конференция C++ Russia
асио кстати на корутины будут переписывать? )
источник

N

Neargye in Конференция C++ Russia
На спп раша?
источник

AP

Antony Polukhin in Конференция C++ Russia
источник

AP

Antony Polukhin in Конференция C++ Russia
На нём, и на C++ Zero Cost Conf
источник

NK

Nickolay Kononov in Конференция C++ Russia
забавно что эту ссылку выше 10 сообщений назад кидали уже раза 2, но ее так никто и не посмотрел видимо
источник

N

Neargye in Конференция C++ Russia
Понял, надо будет глянуть)
источник

A

Arelav in Конференция C++ Russia
А какое бывает медленное переключение контекста в таком кейсе? Файберы не медленее как мне кажется, там на х86 сохранить 6 регистров на стек и прочитать столько же. Колбеки, тот же вызов. Пожалуй если запускать тред на любую задачу, но это какой то странный пример
источник

АР

Андрей Руссков... in Конференция C++ Russia
медленное переключение контекста - сохранить весь стек
источник

АР

Андрей Руссков... in Конференция C++ Russia
в случае stackless корутины в точке останова у неё всё сохранено, остается только сам coroutine_handle сохранить/передать
источник

A

Arelav in Конференция C++ Russia
Это сомнительное утверждение которое должно быть подкреплено бенчмарками, в целом да писать быстрый конкуретный код легче всего на файберах, потом наверно корутины, а потом уже попытки разбивать на колбеки для futures или senders. Но это прежде всего вопрос юзерского кода, и удобства юзера, имплементация библиотеки с точки зрения скорости не изменится. Все также разные шедулеры будут лучше при разных размерах задач и количестве задач
источник

A

Arelav in Конференция C++ Russia
В каком месте оно медленное? Память выделена заранее, ещё раз это сохранить 6 регистров, не думаю что это принципиально дороже чем вызов стеклесс корутины в котором условный call а затем switch по state
источник