用C语言实现如下,设置一个全局变量,尝试使用两个线程各自对全局变量自增1000万次,输出最后的结果
时间: 2024-05-10 11:14:55 浏览: 70
C语言 全局变量和局部变量详解及实例
5星 · 资源好评率100%
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <pthread.h>
long long global_var = 0;
void* thread_func(void* arg) {
for (int i = 0; i < 10000000; i++) {
global_var++;
}
return NULL;
}
int main() {
pthread_t thread1, thread2;
pthread_create(&thread1, NULL, thread_func, NULL);
pthread_create(&thread2, NULL, thread_func, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("global_var = %lld\n", global_var);
return 0;
}
```
在这个代码中,我们定义了一个全局变量 `global_var`,并且创建了两个线程分别对它进行自增。每个线程都执行 10000000 次自增操作。最后,我们在主线程中使用 `pthread_join` 等待两个线程的结束,然后输出 `global_var` 的值。
由于两个线程并行执行自增操作,因此 `global_var` 的最终值可能会受到竞争条件的影响。如果我们运气不好,可能会得到一个小于 20000000 的值。为了避免这种情况,我们可以使用线程同步机制,例如互斥锁,来保护 `global_var` 的访问。
阅读全文