I read that ucontext is used to save context between multiple threads in linux. Since the OS does the context switching between different threads, why does linux provide this header file (ucontext.h) for context switching?
相关问题
- Multiple sockets for clients to connect to
- Is shmid returned by shmget() unique across proces
- What is the best way to do a search in a large fil
- glDrawElements only draws half a quad
- how to get running process information in java?
ucontext.h
defines functions (setcontext
,getcontext
,makecontext
, andswapcontext
) and structures (ucontext_t
andmcontext_t
) that allow the programmer to save and restore the program context.Using these functions, a programmer can implement advanced flow control schemes, such as coroutines or lightweight user threads.
A good amount of detail (including an example of implementing coroutines) is given in the GNU C Library: Complete Context Control.
It should be noted
ucontext.h
was obsoleted in POSIX.1-2008 ("IEEE Std 1003.1-2001/Cor 2-2004, item XBD/TC2/D6/28 is applied, updating the getcontext(), makecontext(), setcontext(), and swapcontext() functions to be obsolescent." on theucontext.h
page ).)