关于Getcontext函数的问题

Cur*_*der 3 c multithreading

我正在尝试实现用户级线程库.Getcontext函数用于保存当前线程在内存中的上下文.函数Getcontext用于2种情况

  1. 保存当前上下文并移动到下一个线程
  2. 创建新的上下文

但是,在这两种情况下,它返回相同的值.那么,我如何区分这两种情况呢?

谢谢

nos*_*nos 9

getcontext不会移动到新线程,setcontext()和swapcontext()会移动.您的线程库应至少实现以下两个功能:

  1. 能够创建新线程.

  2. 能够切换到另一个线程.

在第一种情况下,调用getcontext()来初始化ucontext_t,为堆栈分配内存并在ucontext_t中设置堆栈指针,然后调用makecontext()以使用启动函数初始化上下文.

在第二种情况下,调用getcontext()来存储当前线程的上下文,并调用setcontext()以切换到先前存储的另一个线程.或者,更常见的是,您使用swapcontext结合get/setcontext调用.有关使用get/setcontext实现协作线程的一种非常简单的方法,请参见此处.