ThreadFunc()在这里被调用两次吗?有时候我会注意到一个电话,有时甚至都没有。
#include <windows.h>
#include <stdio.h>
DWORD WINAPI ThreadFunc(LPVOID);
int main()
{
HANDLE hThread;
DWORD threadld;
hThread = CreateThread(NULL, 0, ThreadFunc, 0, 0, &threadld );
printf("Thread is running\n");
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
printf("In ThreadFunc\n");
return 0;
}
输出1
Thread is running
In ThreadFunc
In ThreadFunc
Press any key to continue . . .
输出2
Thread is running
In ThreadFunc
Press any key to continue . . .
输出3
Thread is running
Press any key to continue . . .
答案 0 :(得分:4)
要调用CRT功能,例如printf
,您应该使用_beginthread
或_beginthreadex
代替CreateThread
。
无论如何,程序可能会在线程有机会输出任何内容之前结束。
答案 1 :(得分:2)
一点点补充:在main()中使用WaitForSingleObject让你的线程完成一个工作。
答案 2 :(得分:0)
不,ThreadFunc永远不会被调用两次。无论如何,我相信您的代码段不完整 - 您是否可以将完整的代码段发布到您遇到此问题的位置?