簡體   English   中英

如何在 C 程序中創建線程

[英]How to create a thread in C program

我正在嘗試使用 CreateThread() function 創建一個線程並在該線程中執行簡單的加法 function 。 我寫了一些代碼。 但是線程沒有以任何方式啟動。

你能幫我更正代碼嗎

我已經通過 MSDN 了解了 createthread function

#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; 
}

您的程序可能在您在 main 中創建的線程有機會完成之前退出。 因此,線程永遠沒有機會完成並打印結果。

CloseHandle調用之前,添加一個WaitForSingleObject調用。 這將強制 main 中的代碼等待線程完成。

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

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


    return 0; 
}

此外,請確保在您的線程中也刷新 output。 printf需要一個行尾字符。

而不是在ThreadFunc中:

printf("%d",c);

將其更改為:

printf("%d\n",c);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM