没有getch的简单多线程

时间:2014-01-10 19:28:28

标签: c multithreading

到目前为止,我只在Linux平台上使用过程和线程。 现在我试着继续使用Windows。我立即停止了非常简单的程序。 你能告诉我为什么我的程序没有写任何东西,如果我用getch删除行吗? 我希望我的线程在没有任何压力的情况下完成。 提前谢谢

#include <windows.h>
#include <stdio.h>

DWORD WINAPI ThreadFunc() 
{ 
    printf("lets print something"); 

    return 0; 
} 

VOID main( VOID ) 
{ 
    DWORD dwThreadId; 
    HANDLE hThread; 

    hThread = CreateThread( 
        NULL,                        // default security attributes 
        0,                           // use default stack size  
        ThreadFunc,                  // thread function 
        NULL,                // argument to thread function 
        0,                           // use default creation flags 
        &dwThreadId);                // returns the thread identifier 

    // Check the return value for success. 

   if (hThread == NULL) 
   {
      printf( "CreateThread failed (%d)\n", GetLastError() ); 
   }
   else 
   {
      _getch();
      CloseHandle( hThread );
   }
}

1 个答案:

答案 0 :(得分:0)

如果您的盒子相对空闲,操作系统可能会将线程创建请求发送到另一个核心,因此允许“主”线程(由进程加载器创建的线程)快速运行。当你的新线程转向使用printf调用来调用操作系统时,主线程已经返回,该进程的所有线程的状态都被设置为“永不再次运行”,并且终止请求排队等待它它的处理器间核心驱动程序。新线程在那里被消灭,然后现在冗余的终止请求被丢弃。