开发者

Creating Thread in Win32

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(L开发者_Python百科PVOID);

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 . . .


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.


A little addition: use WaitForSingleObject inside main() to give your thread finish a job.


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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜