Size: a a a

2021 February 19

ГК

Глеб Куликов... in dlang.ru
The secret of stackless coroutines is that they can suspend themselves only from the top-level function. For all other functions their data is allocated on the callee stack, so all functions called from the coroutine must finish before suspending the coroutine. All the data that coroutine needs to preserve its state is allocated dynamically on the heap. This usually takes a couple of local variables and arguments, which is far smaller in size than the whole stack allocated in advance.
источник

EP

Egor Pugin in dlang.ru
https://godbolt.org/z/a8WzfP
вот примерчик набросал для проброса с порта на хост:порт
источник

ГК

Глеб Куликов... in dlang.ru
Egor Pugin
https://godbolt.org/z/a8WzfP
вот примерчик набросал для проброса с порта на хост:порт
тестировать надо
источник

EP

Egor Pugin in dlang.ru
на предмет чего?
источник

Е

Евгений in dlang.ru
Игорь
а разве это не компайлера работа - настроить эти связи правильно
Файбер в D - это не часть компилятора, это библиотечная сущность. Компилятор понятия не имеет о внутренней структуре файбера.
источник

И

Игорь in dlang.ru
а, точно
источник

ГК

Глеб Куликов... in dlang.ru
Egor Pugin
на предмет чего?
на предмет работы в *общем* случае. особенно, если корутине передаётся лябмда, например
источник

EP

Egor Pugin in dlang.ru
Глеб Куликов
на предмет работы в *общем* случае. особенно, если корутине передаётся лябмда, например
да должно всё ок быть, не понимаю сомнений
источник

ГК

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

EP

Egor Pugin in dlang.ru
для себя да
источник

ГК

Глеб Куликов... in dlang.ru
кстати, нашёл кусок в осуждении. дишние файберы *можно* переносить в другую нить, но только, если на момент переноса они не активны. в приниципе, логично
источник

ГК

Глеб Куликов... in dlang.ru
обсуждении
источник

И

Игорь in dlang.ru
и если он не имеет ссылок на tls
источник

ГК

Глеб Куликов... in dlang.ru
Игорь
и если он не имеет ссылок на tls
ещё бы
источник

ГК

Глеб Куликов... in dlang.ru
For me language being TLS by default is enough to not even try this madness. If we allow moves a typical fiber will see different "globals" depending on where it is scheduled next.

For instance, if a thread local connection is used (inside of some pool presumably) then:

Socket socket;

first_part = socket.read(...); // assume this yields
second_part = socket.read(...); // then this may use different socket

https://forum.dlang.org/post/mkphp7$2r0f$1@digitalmars.com

весьма разумно, имхо
источник

EP

Egor Pugin in dlang.ru
вот ещё по фиберам -
https://devblogs.microsoft.com/oldnewthing/20191011-00/?p=102989
и
Gor Nishanov has a fantastic write-up of the history of fibers and why they suck.
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p1364r0.pdf
источник

И

Игорь in dlang.ru
ну вывод и выход очевиден
источник

DH

Dark Hole in dlang.ru
О чем спор?
источник

EP

Egor Pugin in dlang.ru
Dark Hole
О чем спор?
да фиберы, корутины обсуждаем, разбираемся
источник

DH

Dark Hole in dlang.ru
Разбираете что?
источник