c++ - 等待其他线程继续

标签 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);
   }
}

我有一个问题,doSomeWork() 一直在做事情,它阻止了 processing()。我认为线程是异步的,所以当它处于休眠状态时,我可以做其他事情。我的问题是如何在 doSomeWork() 中休眠并产生其他线程,然后恢复 doSomework()?

最佳答案

线

t.join();

暂停调用线程,直到线程 t 完成(当 doSomeWork())返回时。

将您的代码更改为

std::thread t( doSomeWork );
processing();
t.join();

如果您希望 processing()doSomeWork() 并行运行。

关于c++ - 等待其他线程继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027363/

相关文章:

c++ - 类模板中成员变量的顺序

c++ - 用户输入存储在 char 数组中 (C++)

c++ - perl 内联 cpp 不工作 windows 32 位

java - 线程安全单例和内部类解决方案

c++ - 生产者-消费者队列- std::queue 还是用户编写的链表?

c - 为什么线程不能识别标志的变化?

c++ - 多线程程序只执行最后创建的线程?

java - 一个键具有多个值的并发映射,并在超时时自动删除

c# - 这段代码线程安全吗?

c# - volatile 读/写和 Thread.MemoryBarrier 排序