在这个代码中,我们使用了 CreateThread 函数来创建线程,WaitForMultipleObjects 函数来等待所有线程完成,CloseHandle 函数来关闭线程句柄。Sleep 函数用于模拟线程工作时的延迟。
cpp
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
// 线程函数
DWORD WINAPI thread_function(LPVOID arg) {
int thread_id = *(int*)arg;
printf("Thread %d is running.\n", thread_id);
// 模拟线程工作
for (int i = 0; i < 5; i++) {
printf("Thread %d is working: %d\n", thread_id, i);
Sleep(1000); // 模拟工作延迟
}
printf("Thread %d has finished working.\n", thread_id);
return 0;
}
int main() {
// 创建线程
HANDLE threads[2];
int thread_ids[2] = { 1, 2 };
for (int i = 0; i < 2; i++) {
threads[i] = CreateThread(
NULL, // 默认安全属性
0, // 默认堆栈大小
thread_function, // 线程函数
&thread_ids[i], // 线程参数
0, // 默认创建标志
NULL // 不需要线程ID
);
if (threads[i] == NULL) {
printf("Error creating thread %d\n", thread_ids[i]);
return 1;
}
}
// 等待线程完成
WaitForMultipleObjects(2, threads, TRUE, INFINITE);
// 关闭线程句柄
for (int i = 0; i < 2; i++) {
CloseHandle(threads[i]);
}
printf("All threads have finished.\n");
return 0;
}