Ucontext в Linux
Я читал, что ucontext используется для сохранения контекста между несколькими потоками в Linux. Поскольку ОС выполняет переключение контекста между различными потоками, почему linux предоставляет этот заголовочный файл (ucontext.h) для переключения контекста?
1 ответ
ucontext.h
определяет функции (setcontext
, getcontext
, makecontext
, а также swapcontext
) и конструкции (ucontext_t
а также mcontext_t
), которые позволяют программисту сохранять и восстанавливать контекст программы.
Используя эти функции, программист может реализовать усовершенствованные схемы управления потоками, такие как сопрограммы или легкие пользовательские потоки.
Достаточное количество деталей (включая пример реализации сопрограмм) дано в Библиотеке GNU C: Полный контекстный контроль.
Следует отметить ucontext.h
был устаревшим в POSIX.1-2008 ("IEEE Std 1003.1-2001/Cor 2-2004, применяется элемент XBD/TC2/D6/28, обновляя getcontext(), makecontext(), setcontext() и swapcontext() функции, чтобы быть устаревшим."на ucontext.h
страница).)