Создание темы в Win32 - PullRequest
       28

Создание темы в Win32

1 голос
/ 26 мая 2010

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

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

Для вызова функций CRT, таких как printf, вы должны использовать _beginthread или _beginthreadex вместо CreateThread.

В любом случае, программа может завершиться, прежде чем поток сможет что-либо вывести.

2 голосов
/ 26 мая 2010

Небольшое дополнение: используйте WaitForSingleObject внутри main (), чтобы завершить работу потока.

0 голосов
/ 27 мая 2010

Нет, ThreadFunc никогда не должен вызываться дважды. В любом случае, я считаю, что ваш фрагмент кода неполон - не могли бы вы опубликовать полный фрагмент кода, где вы видите эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...