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