使用C库函数setcontext(),getcontext()等实现Fork实现

时间:2015-02-27 18:12:07

标签: c++ multithreading unix pthreads

我正在使用C函数 getcontext(),setcontext() makecontext()编写自定义用户级线程库。我在thread_fork()函数的实现逻辑上遇到了困难。基本上,thread_fork()函数创建新线程,当从thread_fork()返回时,新创建的线程应该接收返回值 0 ,而原始线程应该接收 threadid as返回值。

void Thread1Example(int) {
  std::cout << "B" << std::endl;
  thread_exit();
}
void main() {
  Init(); // Initialize thread library data structures
  std::cout << "A" << std::endl;
  int thread1 = thread_fork(); // Fork a new thread and returns 0 & threadID
  if (thread1==0)
    Thread1Example();
  std::cout << "C" << std::endl;
}

~~~~~~~~~~~~~~~

Console Output:
ABC

我想知道一些详细信息thread_fork()函数如何使用C上下文库(setcontext(),getContext等)返回两个不同的值。

0 个答案:

没有答案