Windows ใช้ CreateThread() สร้างเธรด และ WaitForSingleObject() รอเธรดจบ (เหมือน pthread_join)
ฟังก์ชันหลัก
CreateThread()พารามิเตอร์: security, stack size, thread function, parameter, flags, thread IDWaitForSingleObject(handle, INFINITE)บล็อกจนเธรดจบCloseHandle()ปิด handle เธรดWaitForMultipleObjects()รอหลายเธรดพร้อมกัน
ตัวอย่าง: คำนวณผลรวมในเธรดแยก
#include <windows.h>
#include <stdio.h>
DWORD Sum = 0;
DWORD WINAPI Summation(LPVOID Param) {
DWORD Upper = *(DWORD*)Param;
for (DWORD i = 0; i <= Upper; i++) Sum += i;
return 0;
}
int main(int argc, char *argv[]) {
if (argc != 2) { fprintf(stderr, "Need integer param\n"); return -1; }
DWORD Param = atoi(argv[1]);
if (Param < 0) { fprintf(stderr, "Must be >= 0\n"); return -1; }
HANDLE ThreadHandle;
DWORD ThreadId;
ThreadHandle = CreateThread(NULL, 0, Summation, &Param, 0, &ThreadId);
if (ThreadHandle) {
WaitForSingleObject(ThreadHandle, INFINITE);
CloseHandle(ThreadHandle);
printf("Sum = %d\n", Sum);
}
return 0;
}
คอมไพล์
gcc program.c -o program.exe (ต้องใช้ MinGW/w64)