我正在尝试将上下文从一个线程交换到另一个线程。我正在维护一个链表来维护线程上下文。因此,链表中的节点具有类型ucontext_t
的成员,该成员保存特定线程的上下文。每当我尝试交换上下文时,在链表的末尾会添加一个节点。
typedef struct nodes
{
long int t_id;
ucontext_t u_contxt;
struct nodes * next;
} nodes;
因此,每当我尝试交换上下文时,我都会遍历链接列表并将ucontext
引用传递给swapcontext
,如下所示,获取当前上下文。
temp1->u_contxt
指向当前上下文,temp2->u_contxt
指的是我想要更改的上下文
swapcontext(&(temp1->u_contxt),&(temp2->u_contxt));
在调用swapcontext之前,我只有2个节点,并且在从swapcontext返回后,还有一个节点被添加到linkedlist的末尾。