我正在使用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等)返回两个不同的值。