Reputation: 17557
Does ThreadFunc() gets called two times here? sometimes I notice a single call and sometimes none at all.
#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;
}
Output 1
Thread is running
In ThreadFunc
In ThreadFunc
Press any key to continue . . .
Output 2
Thread is running
In ThreadFunc
Press any key to continue . . .
Output 3
Thread is running
Press any key to continue . . .
Upvotes: 1
Views: 726
Reputation: 326
No, ThreadFunc should never get called twice. In any case, I believe your code snippet is incomplete - could you post the full code snippet where you are seeing this problem?
Upvotes: 0
Reputation: 12230
A little addition: use WaitForSingleObject inside main() to give your thread finish a job.
Upvotes: 2
Reputation: 18507
In order to call CRT functions, such as printf
you should use _beginthread
or _beginthreadex
instead of CreateThread
.
Anyway, the program may end before the thread has the opportunity to output anything.
Upvotes: 4