Size: a a a

pro.graphon (and gamedev)

2020 April 04

d

disba1ancer in pro.graphon (and gamedev)
расматривал файберы как один из вариантов использования для тасок, но нашёл довольно фатальный недостаток, надо как-то вызывать деструкторы объектов в случае отмены задания
источник

d

disba1ancer in pro.graphon (and gamedev)
можно конечно в обёртках для системных функций работающих с файберами, сделать специальный вариант завершения таски, путём входа в неё и выбраса внутри исключения, которое будет поймано только в самом верху, с целью нормального разрушения стека, но как-то костыльно
источник

d

disba1ancer in pro.graphon (and gamedev)
какая тишина в чате...
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
disba1ancer
можно конечно в обёртках для системных функций работающих с файберами, сделать специальный вариант завершения таски, путём входа в неё и выбраса внутри исключения, которое будет поймано только в самом верху, с целью нормального разрушения стека, но как-то костыльно
Не, так оно и делается. Это или ручной хендлинг сигналов посылающихся через резюм фибера.
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Типа

if (this_fiber->yield() == RESUME_CANCEL) {
   return RESUME_CANCEL;
}
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
И конечно же так же проверять под всеми вызовами выше по стеку.
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
А еще можно использовать стеклесс фиберы, что избавляет тебя от вышеописанных проблем за счет эргономики.
источник

d

disba1ancer in pro.graphon (and gamedev)
Mikola Summer Duck
А еще можно использовать стеклесс фиберы, что избавляет тебя от вышеописанных проблем за счет эргономики.
про стеклесс я не понял
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Ну, принцип тот же но вместо стека предефайненный структ в который кладутся все переменные и при свиче контекста фрейм и стек регистры не сохраняем
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Типа самодельный генератор или корутина.
источник

d

disba1ancer in pro.graphon (and gamedev)
ну такие и через switch можно сделать
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Да. При этом единственное что ты теряешь - возможность яйлдить из функций ниже по стеку.
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Но стоит ли оно того?
источник

d

disba1ancer in pro.graphon (and gamedev)
Mikola Summer Duck
Да. При этом единственное что ты теряешь - возможность яйлдить из функций ниже по стеку.
это у всех стеклесс решений
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Ну да
источник

d

disba1ancer in pro.graphon (and gamedev)
Mikola Summer Duck
Да. При этом единственное что ты теряешь - возможность яйлдить из функций ниже по стеку.
и чтобы оно могло яйлдить нужно чтобы вся цепочка вызовов состояла из аналогичных корутин
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Как что-то плохое.
источник

d

disba1ancer in pro.graphon (and gamedev)
Mikola Summer Duck
Как что-то плохое.
я не сказал что это плохо
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
А. Ну мой пойнт в том что если бы я снова делал таскосистему с резюмом я бы не заморачивался со стекфул штуками.
источник

MS

Mikola Summer Duck in pro.graphon (and gamedev)
Потому что стеки это боль, и рано или поздно что-то да утечет за пределы.
источник