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失败,下面的代码将被执行。谢谢你的回复,你能阅读我的补充并给出一些想法吗?谢谢你的回复,你能阅读我的补充并给出一些想法吗?