[英]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.