c语言对于共享变量 counter完成线程累加操作。
时间: 2023-05-20 14:02:38 浏览: 157
以下是一个使用 C 语言实现的线程安全的共享变量 counter 的累加操作的示例代码:
```c
#include <stdio.h>
#include <pthread.h>
#define NUM_THREADS 10
int counter = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *thread_func(void *arg) {
int i;
for (i = 0; i < 1000000; i++) {
pthread_mutex_lock(&mutex);
counter++;
pthread_mutex_unlock(&mutex);
}
pthread_exit(NULL);
}
int main() {
pthread_t threads[NUM_THREADS];
int i;
for (i = 0; i < NUM_THREADS; i++) {
pthread_create(&threads[i], NULL, thread_func, NULL);
}
for (i = 0; i < NUM_THREADS; i++) {
pthread_join(threads[i], NULL);
}
printf("counter = %d\n", counter);
return 0;
}
```
这个程序创建了 10 个线程,每个线程都会对共享变量 counter 进行 1000000 次累加操作。为了保证线程安全,使用了互斥锁来保护共享变量。最后输出累加结果。
阅读全文