用C语言 编写一个包含2 个线程的程序,在主线程中创建一个全局变量并初始化为0,在另一个线程对这个全局变量进行递加运算,并在结束时向主线程返回一个结果,由主线程打印输出。
时间: 2024-02-01 12:13:33 浏览: 102
通过一个小例子来简单理解C语言中的内存空间管理
以下是使用C语言编写的一个包含2个线程的程序,其中一个线程会对全局变量进行递加运算,另一个线程是主线程,用于打印结果并退出程序。
```c
#include <stdio.h>
#include <pthread.h>
int global_var = 0;
void *thread_func(void *arg)
{
// 对全局变量进行递加操作
for (int i = 0; i < 100000; i++) {
global_var++;
}
// 将递加后的结果返回给主线程
pthread_exit((void *)global_var);
}
int main()
{
pthread_t tid;
int ret;
// 创建子线程
ret = pthread_create(&tid, NULL, thread_func, NULL);
if (ret != 0) {
printf("pthread_create error\n");
return -1;
}
// 等待子线程结束并获取返回值
int result;
pthread_join(tid, (void **)&result);
// 打印结果
printf("global_var = %d\n", result);
return 0;
}
```
在程序中,我们首先创建了一个全局变量`global_var`并初始化为0。接着,我们创建了一个新的线程`thread_func`,该线程会对`global_var`进行100000次递加操作,然后将递加后的结果返回给主线程。最后,在主线程中我们使用`pthread_join`函数等待子线程结束并获取返回值,然后打印结果并退出程序。
阅读全文