C++ 关于C++;,在什么情况下可以执行此函数下的代码?

C++ 关于C++;,在什么情况下可以执行此函数下的代码?,c++,multithreading,C++,Multithreading,我正在阅读一个用户级线程库项目的代码,其中一集代码如下: /*This function to manage mainthread*/ static void main_thread_manager() { mainThread->status = 1; setcontext(&mainThread->context); if(mainThread->exited != 1) { mainThread->finish

我正在阅读一个用户级线程库项目的代码,其中一集代码如下:

/*This function to manage mainthread*/
static void main_thread_manager()
{
    mainThread->status = 1;
    setcontext(&mainThread->context);
    if(mainThread->exited != 1)
    {
        mainThread->finished = 1;
    }
    setcontext(&scheduler_context);
    return;
}
此代码用于完成从此处使用的主线程

makecontext(&mainThread->context, (void(*)(void)) main_thread_manager, 0, NULL, NULL);//(1)
我是这个领域的新手。我必须说这段代码是正确的,因为当我删除它的任何一行时,程序都不会退出。我不能在这里复制所有代码,因为它太多了

&scheduler\u context
将导致我的调度程序功能,然后整个过程将退出

似乎每次代码运行到第一个代码中的setcontext()时,上下文都会转到其他位置。为什么setcontext()下存在一些代码

补编:

事实上,在看了下面的一个答案后,我想在这里提到一些东西。 上面的
makecontext
位于创建主线程的initial()函数中。但是在create_thread()函数中,我创建了其他新线程。还有一个类似的功能:

getcontext(&mainThread->context);//(2)
这是什么意思?当我们设置context(&mainThread->context)时,程序将首先查找(2),如果create_线程已经完成,setcontext将跳转到(1)?

如果setcontext失败,下面的代码将被执行。

如果setcontext失败,下面的代码将被执行。

谢谢你的回复,你能阅读我的补充并给出一些想法吗?谢谢你的回复,你能阅读我的补充并给出一些想法吗?