Size: a a a

2021 February 19

EP

Egor Pugin in dlang.ru
мне нужен пример
источник

OB

Oleg B in dlang.ru
а там где-то внизу будут файберы
источник

EP

Egor Pugin in dlang.ru
я вот нашёл c#, c++
источник

OB

Oleg B in dlang.ru
Egor Pugin
мне нужен пример
источник

OB

Oleg B in dlang.ru
вот пример эхосервера на D с файберами
источник

OB

Oleg B in dlang.ru
правда староватый, сейчас вроде в main а не в shared static this код записывать надо
источник

EP

Egor Pugin in dlang.ru
ну тут слишком всё попрятали
источник

EP

Egor Pugin in dlang.ru
так-то пойдёт, нормальный пример
источник

ГК

Глеб Куликов... in dlang.ru
Egor Pugin
бесстековые
полностековые можно замораживать в любой точке, в т.ч., во вложенном стекфрейме, и размораживать точно в точке заморозки. Как это передать в другой тред? .  Бесстековые вообще нельзя передать в другую функцию. вот и вопос...
источник

OB

Oleg B in dlang.ru
Egor Pugin
не, я сравню
я так и не понимаю что ты сравнивать собрался, потому что у каждой реализации (даже в пределах одного языка) будут свои приколы
источник

OB

Oleg B in dlang.ru
например можно файбер создавать на каждое соединение, можно переиспользовать уже существующие, можно файберы нанизывать поверх движка на колбеках, можно сразу в файбере логику делать
источник

EP

Egor Pugin in dlang.ru
Oleg B
например можно файбер создавать на каждое соединение, можно переиспользовать уже существующие, можно файберы нанизывать поверх движка на колбеках, можно сразу в файбере логику делать
да просто наивное, субъективное сравнение
источник

EP

Egor Pugin in dlang.ru
вот на вайб д самый короткий пример)
источник

EP

Egor Pugin in dlang.ru
Глеб Куликов
полностековые можно замораживать в любой точке, в т.ч., во вложенном стекфрейме, и размораживать точно в точке заморозки. Как это передать в другой тред? .  Бесстековые вообще нельзя передать в другую функцию. вот и вопос...
смотри, вот в с++ играюсь -
boost::asio::awaitable<void> copy(
это корутина (стаклес).
вот передаю в функцию -
boost::asio::co_spawn(executor, copy(in, out) /*...*/
boost::asio::co_spawn(executor, copy(out, in) /*...*/
источник

И

Игорь in dlang.ru
Egor Pugin
да просто наивное, субъективное сравнение
Создаешь файбер через new, запускаешь его через call, переключаешь контекст через yield. Вот и все
источник

И

Игорь in dlang.ru
Все остальное к собственно файберам не относится
источник

OB

Oleg B in dlang.ru
Игорь
Все остальное к собственно файберам не относится
+
источник

ГК

Глеб Куликов... in dlang.ru
Egor Pugin
смотри, вот в с++ играюсь -
boost::asio::awaitable<void> copy(
это корутина (стаклес).
вот передаю в функцию -
boost::asio::co_spawn(executor, copy(in, out) /*...*/
boost::asio::co_spawn(executor, copy(out, in) /*...*/
реализацию в бусте не знаю. стеклесс корутина хранит своё состояние в себе. при переносе в другой тред, в каком контексте будет восстановлено  сохранённое состояние?
источник

EP

Egor Pugin in dlang.ru
ну вот это "в себе" и есть владелец, оно и продолжит работать из этого, своего, состояния в любом треде
источник

ГК

Глеб Куликов... in dlang.ru
хотя... смотрю с++20, там можно
источник