Эффективное переключение стеков - PullRequest
2 голосов
/ 25 ноября 2011

По какой-то причине я переключаю стек для вызова некоторых функций в моем приложении. Для этой цели я использую makecontext / getcontext / swapcontext . Тем не менее, я считаю, что это слишком медленно. Я попытался использовать для этой цели специальный код, который сохраняет указатель стека и другие регистры, а затем назначает указателю стека значение новой памяти, которую я хочу использовать в качестве стека. Тем не менее, я получаю ошибка обнаружения стека ошибка.

Установлены ли у них некоторые специальные разрешения для стека ОС или же в чем здесь проблема? Как обойти проблему.

Ответы [ 2 ]

3 голосов
/ 25 ноября 2011

Превосходная библиотека GNU Pth интенсивно использует эти методы.Он очень хорошо задокументирован и определяет наиболее эффективный механизм переключения контекста во время компиляции. edit: на самом деле во время конфигурирования.

В статье автора: rse-pmt.ps дается технический обзор переключения контекста в пространстве пользователя и связанных с ним проблем - альтернативные стеки сигналов и т. Д.

2 голосов
/ 25 ноября 2011

Вы можете посмотреть, как другие программы делают те же самые грязные трюки, что и вы.В частности Схема курицы .Возможно, вы захотите использовать longjmp после того, как вручную сделаете грязные вещи на цели jmp_buf.Конечно, все это не переносимо.

Но, пожалуйста, , объясните больше вашей общей цели .Ваши вопросы, как правило, слишком загадочные .... (и это отталкивает некоторых)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...