pthread实现 sum=1+2+…+n,n 通过命令行参数输入。
时间: 2024-05-07 18:15:27 浏览: 89
以下是使用pthread实现sum=1 2 … n的示例代码,其中n是通过命令行参数输入的:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 线程函数
void* thread_func(void* arg) {
int* num = (int*)arg;
int sum = 0;
for (int i = 1; i <= *num; i++) {
sum += i;
}
int* result = (int*)malloc(sizeof(int));
*result = sum;
pthread_exit(result);
}
int main(int argc, char* argv[]) {
if (argc != 2) {
printf("Usage: %s n\n", argv[0]);
return 1;
}
int n = atoi(argv[1]);
pthread_t tid;
int ret = pthread_create(&tid, NULL, thread_func, &n);
if (ret != 0) {
printf("pthread_create error\n");
return 1;
}
int* result;
pthread_join(tid, (void**)&result);
printf("sum = %d\n", *result);
free(result);
return 0;
}
```
在这个示例代码中,我们首先判断命令行参数个数是否为1,如果不是则打印使用说明并返回。接着将命令行参数转换为整数n,创建一个新线程并传递n作为参数。线程函数中使用for循环计算1到n的和,将结果保存在动态分配的内存中,并通过pthread_exit返回。在主线程中使用pthread_join等待子线程结束,并将子线程返回的结果取出来打印。最后记得释放动态分配的内存。
阅读全文