Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么要冻结线程?_C++_Multithreading_Visual Studio 2012 - Fatal编程技术网

C++ 为什么要冻结线程?

C++ 为什么要冻结线程?,c++,multithreading,visual-studio-2012,C++,Multithreading,Visual Studio 2012,我想知道为什么循环中的kbhit不允许线程工作,在下面的代码中必须有一个到屏幕测试的输出!,但事实并非如此。为什么? #include <iostream> #include <process.h> #include <conio.h> using namespace std; void Thread(void *par) { while (true) { cout<<"Test!"<

我想知道为什么循环中的kbhit不允许线程工作,在下面的代码中必须有一个到屏幕测试的输出!,但事实并非如此。为什么?

#include <iostream>
#include <process.h>
#include <conio.h>

using namespace std;

void Thread(void *par)
{
        while (true)
        {
            cout<<"Test!"<<endl;
        };
} 

int main(int argc, char* argv[])
{ 
    _beginthread( Thread, 0, NULL);
    while(!_kbhit());
    return 0;
}

无论是KBHIT还是One NeXthType都是C++标准的一部分,两者之间的交互作用不明确。据我们所知,所有的线程可能会被阻塞,直到一个键被击中。这个程序对我来说是有效的。垃圾邮件测试!一遍又一遍直到我按下一把钥匙。你使用什么环境?是的,你说得对,我使用Windows 8和Visual Studio 2012,当我用ctrl+f5运行这个程序时,它不会打印,如果我运行调试版本的exe文件,它会运行顺利。奇怪。@WanderingLogic:根据C++11草案N3376的§27.7.3.8[ostream.manip]^1,endl调用os.putos.gaveled'\n',然后是os.flush,因此endl隐式调用flush;不需要手动操作。