标签:
在维基百科https://en.wikipedia.org/wiki/Setcontext里面有以下一段程序,理解了这个小程序,基本上对ucontext这个执行上下文切换的库也能理解个差不多。
#include <stdio.h> #include <ucontext.h> #include <unistd.h> int main(int argc, const char *argv[]){ ucontext_t context; getcontext(&context); puts("Hello world"); sleep(1); setcontext(&context); return 0; }
我们来看这个程序的逻辑。getcontext(&context);这个语句是要将当前上下文环境存入ucontext_t context这个变量中。而setcontext(&context);这个语句用英文来解释就是:This function transfers control to the context in ucontext_t context. Execution continues from the point at which the context was stored in ucontext_t context.中文翻译过来的意思是:当前函数(就是main函数)将转移控制到context变量中存储的上下文,执行将从存储上下文到context变量的那个点继续执行。所以这个程序的结果是:无限循环的打印hello world,想明白了吗?想明白了基本上ucontext也理解了不少了。
[linux]关于ucontext库的一个小程序的注释 @ C语言
标签:
原文地址:http://www.cnblogs.com/zuoyuan/p/4766612.html