Windows API में थ्रेड्स `CreateThread()` फंक्शन का उपयोग करके बनाए जाते हैं। Pthreads की तरह ही, इसमें सुरक्षा जानकारी, स्टैक आकार, और थ्रेड के लिए फ्लैग जैसे गुण पास किए जाते हैं। नीचे दिए गए प्रोग्राम में डिफ़ॉल्ट मानों का उपयोग किया गया है।
योग थ्रेड बनने के बाद, पैरेंट को इसके पूरा होने का इंतजार करना चाहिए क्योंकि मान योग थ्रेड द्वारा सेट किया जाता है। Pthreads में `pthread_join()` का उपयोग होता है; Windows में `WaitForSingleObject()` फंक्शन इसके समतुल्य है। कई थ्रेड्स के लिए `WaitForMultipleObjects()` का उपयोग किया जाता है।
उदाहरण: Windows API का उपयोग करके मल्टीथ्रेडेड C प्रोग्राम
#include <windows.h>
#include <stdio.h>
DWORD Sum; // थ्रेड(थ्रेड्स) द्वारा साझा डेटा
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[]) {
DWORD ThreadId;
HANDLE ThreadHandle;
int Param;
if(argc != 2) {
fprintf(stderr, "An integer parameter is required\n");
return -1;
}
Param = atoi(argv[1]);
if(Param < 0) {
fprintf(stderr, "An integer >= 0 is required\n");
return -1;
}
ThreadHandle = CreateThread(NULL, 0, Summation, &Param, 0, &ThreadId);
if(ThreadHandle != NULL) {
WaitForSingleObject(ThreadHandle, INFINITE);
CloseHandle(ThreadHandle);
printf("sum = %d\n", Sum);
}
return 0;
}