C语言展示多线程编程:全局变量初始值为0.5个线程每个分别+1,5个线程每 个分别-1,输出结果
时间: 2024-05-15 22:16:17 浏览: 94
以下是一个简单的多线程程序,其中初始全局变量值为0.5,其中有两组线程,一组有1个线程,每个线程将全局变量加1,另一组有5个线程,每个线程将全局变量减1,最后输出全局变量的值。
```c
#include <stdio.h>
#include <pthread.h>
double global_var = 0.5;
// 线程函数,将全局变量加1
void *add_func(void *arg) {
global_var += 1;
return NULL;
}
// 线程函数,将全局变量减1
void *sub_func(void *arg) {
global_var -= 1;
return NULL;
}
int main() {
pthread_t threads[6]; // 创建线程数组
int i;
// 创建1个线程,将全局变量加1
pthread_create(&threads[0], NULL, add_func, NULL);
// 创建5个线程,将全局变量减1
for (i = 1; i <= 5; i++) {
pthread_create(&threads[i], NULL, sub_func, NULL);
}
// 等待所有线程执行完毕
for (i = 0; i <= 5; i++) {
pthread_join(threads[i], NULL);
}
// 输出全局变量的值
printf("global_var = %f\n", global_var);
return 0;
}
```
输出结果为:
```
global_var = -3.500000
```
可以看到,由于有5个线程将全局变量减1,最后全局变量的值变成了-3.5。
阅读全文