Как создать тему в программе на C - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь создать поток с помощью функции CreateThread () и выполнить функцию простого добавления в этом потоке.Я написал некоторый код.Но поток никак не инициируется.

Не могли бы вы помочь мне исправить код

Я прошел через MSDN для функции createthread

#include <stdio.h>

#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <strsafe.h>

DWORD WINAPI ThreadFunc(LPVOID lpParam){
     int a=1;
     int b=2; 
     int c;
     c = a+b;
     printf("%d",c);
     return 0;
}

int main(void) 
{
    DWORD myThreadId;
    HANDLE THread_handle;
    printf("\n I am here inmain");
    THread_handle = CreateThread(NULL,0, ThreadFunc, NULL,0,&myThreadId);
    if (THread_handle == NULL) 
    {
        printf(TEXT("CreateThread"));
        //ExitProcess(3)
     }
    printf("I close\n");
    CloseHandle(THread_handle);
    return 0; 
}

1 Ответ

4 голосов
/ 25 сентября 2019

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

Перед вызовом CloseHandle добавьте вызов WaitForSingleObject.Это заставит код в main ждать завершения потока.

    printf("I wait\n");
    WaitForSingleObject(THread_handle, INFINITE);

    printf("I close\n");
    CloseHandle(THread_handle);


    return 0; 
}

Кроме того, убедитесь, что вы также сбрасываете вывод в свой поток.printf нужен символ конца строки.

Вместо этого в ThreadFunc:

printf("%d",c);

Измените его на:

printf("%d\n",c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...