在Java中总是至少有一个线程;在C ++中这是真的吗?

时间:2017-10-13 17:44:34

标签: java multithreading c++11

在Java中,始终至少有一个执行线程(main())在运行。当C ++程序在操作系统上执行时,它是否构成该最小线程?

我问这个问题,因为在Java Thread.current_thread.sleep(x)中有意义但std::this_thread::sleep_for(std::chrono::milliseconds{x})很奇怪,除非有一个线程在运行。

如果我的程序根本没有std::thread,那么总是至少有一个吗?另外,如果我的c ++ 11程序中没有运行线程,那么是否能够使用std::this_thread::sleep_for(std::chrono::milliseconds{x})暗示我的问题的答案?

1 个答案:

答案 0 :(得分:2)

是的,在C ++中总是至少有一个线程正在运行。在开始时,只有一个线程执行初始化并最终开始执行main。

根据程序的外观,主线程可以启动其他线程。当主函数结束时,程序将退出。这与JVM保持运行的Java不同,直到所有守护程序线程都停止。

始终定义

std::this_thread,其函数引用当前正在执行代码的线程。