int swapcontext(ucontext_t *oucp, ucontext_t *ucp);
int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);
如果我的理解是正确的,swapcontext相当于先在oucp上调用getcontext,然后在ucp上调用setcontext。我想看看如何使用 getcontext 和 setcontext 实现 swapcontext。
int swapcontext(ucontext_t *oucp, ucontext_t *ucp)
{
getcontext(oucp);
setcontext(ucp);
}
问题是oucp的上下文在错误的行,我想以一种方式调用getcontext,使得下一行是setcontext(ucp)之后的行。但是, setcontext 没有返回,所以我不能这样做。此外,如果我以这种方式实现 swapcontext,如果我将相同的参数传递给 oucp 和 ucp,我将被卡住。
如何使用这两个函数实现 swapcontext?还是不可能?