在线程中等待我该怎么办?

Mic*_*ick 2 c++ multithreading visual-studio

我有一个主程序,它创建一个N子线程的集合来执行一些计算.从创建线程到完成任务的那一刻,每个孩子都将完全占据他们的任务.主程序还将创建一个特殊的(N + 1)线程,它有一些间歇性的任务要执行.当满足某些条件时(如全局变量具有某个值),特殊线程将执行计算,然后返回以等待再次满足这些条件.至关重要的是,当第N + 1个线程无关时,它不应该减慢其他处理器的速度.有人可以建议如何实现这一目标.

编辑: 明显但笨拙的方式是这样的:

// inside one of the standard worker child threads...
if (time_for_one_of_those_intermittent_calculations_to_be_done())
{
    global_flag_set = TRUE;
}
Run Code Online (Sandbox Code Playgroud)

// inside the special (N+1)th thread
for(;;)
{
    if (global_flag_set == TRUE)
    {
        perform_big_calculation();
        global_flag_set = FALSE;
    }
    // sleep for a while?
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*enc 7

您应该检查Windows API中的WaitForSingleObject和WaitForMultipleObjects函数.

WaitForMultipleObjects的