Я пробовал сделать класс на Delphi для Fibers. Для каждого фибра заведен свой стек. При переключения состояние сохранения в глобальный массив. Но код падает по непонятным причинам.
Можэт, написал с ошыбками? (Да блин, по-моему это был троллинг)
Если оно падает. То понятно что с ошибками. Но падает в произвольные моменты времени. Как бы сохранить и загрузить состояние это около 10 строк на ассемблере. Так что отладить несложно.
Внутренние ссылки тоже копируются? Если вы копируете какой-то объект в массив состояния, то вам надо править все места, где есть ссылки на этот объект
У меня не коруины у меня фиберы. В Delphi нет объектов на стеке. Они все в куче. Сохраняю только вот эти регистры и указатель на SEH-фрейм. Для обработки исключений. TFiberCPUState= record _EBX:Pointer; _EIP:Pointer; _ESP:Pointer; _EBP:Pointer; SEH:Pointer; end;
Ко-руины - это очень забавная, кхм, очепятка
Обсуждают сегодня