等待其他线程继续

oli*_*dev 1 c++ multithreading thread-safety

在C++中,我有这个示例实现:

#include <thread>
#include <iostream>

void doSomeWork( void )
{
    std::cout << "hello from thread..." << std::endl;
    while(true)
    {
       printf("Getting inside doSomeWork\n");
       sleep(1);
    }
}

int main( int argc, char *argv[] )
{
    std::thread t( doSomeWork );
    t.join();

    processing();

    return 0;
}

void processing()
{
   while(true)
   {
      printf("Getting inside processing\n");
      sleep(1);
   }
}
Run Code Online (Sandbox Code Playgroud)

我有一个问题,doSomeWork()继续做事情并阻止处理().我认为线程是异步的,所以当它正在睡觉时,我可以做其他事情.我的问题是如何在doSomeWork()中休眠并产生其他线程,然后恢复doSomework()?

sim*_*onc 6

这条线

t.join();
Run Code Online (Sandbox Code Playgroud)

暂停调用线程,直到线程t完成(when doSomeWork())返回.

将您的代码更改为

std::thread t( doSomeWork );
processing();
t.join();
Run Code Online (Sandbox Code Playgroud)

如果你想processing()doSomeWork()并行运行.