C语言编写一个包含2个线程的程序,在主线程中创建一个全局变量并初始化为0,在另一个线程对这个全局变量进行递加运算,并在结束时向主线程返回一个结果,由主线程打印输出。
时间: 2024-02-09 15:12:59 浏览: 86
C语言多线程中变量累加问题的分析
好的,下面是一个C语言的示例代码,可以满足您的要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int global_var = 0; // 全局变量
void* thread_func(void* arg) {
int i;
for (i = 0; i < 1000000; i++) {
global_var++; // 递加运算
}
pthread_exit((void*)global_var); // 返回结果
}
int main() {
pthread_t tid;
int ret, result;
ret = pthread_create(&tid, NULL, thread_func, NULL);
if (ret != 0) {
printf("Failed to create thread\n");
exit(1);
}
pthread_join(tid, (void**)&result); // 等待线程结束并获取结果
printf("The value of global variable is %d\n", result);
return 0;
}
```
该程序中,主线程创建了一个全局变量global_var,并初始化为0,然后创建了一个线程并调用thread_func函数,在该函数中对global_var进行1000000次递加运算,最后利用pthread_exit函数将结果返回给主线程。主线程调用pthread_join函数等待线程结束并获取结果,然后打印输出。
阅读全文