TLDR; внизу
Я пытаюсь создать среду выполнения с Green Threads для моего языка, вдохновленную процедурами и планировщиком Go Golang.
Среда выполнения написан на C++, и я пытаюсь реализовать упреждающее переключение контекста для потоков ОС.
Я сосредоточен на упреждающем переключении, главным образом, чтобы программистам не приходилось беспокоиться о блокировке потоков. Это позволит им просто беспокоиться о логике, а не о том, что другие потоки не получают достаточного процессорного времени.
Среда выполнения уже имеет совместное планирование, но для тяжелых вычислительных задач эти задачи могут блокировать весь поток ОС в течение значительного времени.
[tldr] Я попробовал реализацию, в которой выполнял переключение контекста внутри обработчиков прерываний. > но это было бы действительно небезопасно из-за особенностей того, как ЦП устанавливает стек + биты ЦП для обработки прерываний.
Мой вопрос:
Как я могу реализовать контекст переключение на C++ (Linux), так что я могу безопасно переключаться между контекстами задач выполнения практически без потери производительности.
Мне нужна только реализация потока, способного переключаться между двумя задачами упреждающе, безопасно и эффективно.
Спасибо все заранее.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ly-not-coo
Как я могу безопасно выполнить переключение контекста в потоке ОС заранее (а не совместно) практически без потери произв ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение