在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})
暗示我的问题的答案?
答案 0 :(得分:2)
是的,在C ++中总是至少有一个线程正在运行。在开始时,只有一个线程执行初始化并最终开始执行main。
根据程序的外观,主线程可以启动其他线程。当主函数结束时,程序将退出。这与JVM保持运行的Java不同,直到所有守护程序线程都停止。
始终定义 std::this_thread
,其函数引用当前正在执行代码的线程。