#include<stdio.h> #include<windows.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; Param = atoi(argv[1]); if (Param <0) { printf("An interger parameter is required.\n"); return -1; } ThreadHandle = CreateThread( NULL, 0, Summation, &Param, 0, &ThreadId); if(ThreadHandle != NULL) { printf("ThreadId=%d\n", ThreadId); WaitForSingleObject(ThreadHandle, INFINITE); CloseHandle(ThreadHandle); printf("sum=%d\n", Sum); } return 0; }代码注释
时间: 2023-07-16 11:13:01 浏览: 107
这是一个使用Windows API创建线程的C语言程序,实现了多线程计算1到指定上界的整数和,并输出结果。
代码注释如下:
```c
#include<stdio.h> // 引入标准输入输出库
#include<windows.h> // 引入Windows API库
DWORD Sum; // 定义一个全局变量Sum,用于保存计算结果
// 线程函数,计算1到指定上界的整数和
DWORD WINAPI Summation(LPVOID Param) {
DWORD Upper = *(DWORD*)Param; // 读取传入的上界参数
for (DWORD i = 0; i<= Upper; i++) // 计算1到上界的整数和
Sum += i; // 将每个整数累加到结果中
return 0; // 返回0表示线程执行完毕
}
// 主函数,程序入口
int main(int argc, char *argv[]) {
DWORD ThreadId; // 定义线程ID
HANDLE ThreadHandle; // 定义线程句柄
int Param; // 定义传入的上界参数
Param = atoi(argv[1]); // 读取传入的参数并转换为整数类型
if (Param <0) // 判断参数是否小于0
{
printf("An interger parameter is required.\n"); // 输出错误提示信息
return -1; // 返回错误码-1
}
ThreadHandle = CreateThread( // 创建线程
NULL, // 默认安全属性
0, // 默认栈大小
Summation, // 调用Summation函数
&Param, // 传入上界参数
0, // 默认线程启动标志
&ThreadId // 保存线程ID
);
if(ThreadHandle != NULL) // 如果线程创建成功
{
printf("ThreadId=%d\n", ThreadId); // 输出线程ID
WaitForSingleObject(ThreadHandle, INFINITE); // 等待线程结束
CloseHandle(ThreadHandle); // 关闭线程句柄
printf("sum=%d\n", Sum); // 输出计算结果
}
return 0; // 返回0表示程序正常结束
}
```
阅读全文