c语言对变量加锁
时间: 2023-07-02 11:12:52 浏览: 142
在 C 语言中,可以使用互斥锁(mutex)来对变量进行加锁。使用互斥锁可以保证同一时间只有一个线程能够访问被锁定的变量,从而避免并发访问造成的问题。下面是一个简单的示例代码:
```
#include <stdio.h>
#include <pthread.h>
int count = 0;
pthread_mutex_t count_mutex;
void *thread_func(void *arg) {
int i;
for (i = 0; i < 1000000; i++) {
pthread_mutex_lock(&count_mutex);
count++;
pthread_mutex_unlock(&count_mutex);
}
return NULL;
}
int main() {
pthread_t thread1, thread2;
pthread_mutex_init(&count_mutex, NULL);
pthread_create(&thread1, NULL, thread_func, NULL);
pthread_create(&thread2, NULL, thread_func, NULL);
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
pthread_mutex_destroy(&count_mutex);
printf("count = %d\n", count);
return 0;
}
```
在上面的代码中,我们创建了两个线程来对 count 变量进行加 1 操作。在每次对 count 进行操作时,我们先使用 pthread_mutex_lock 函数对互斥锁进行加锁,这样就可以保证同一时间只有一个线程能够对 count 进行操作。在操作完成后,我们再使用 pthread_mutex_unlock 函数对互斥锁进行解锁,以便其他线程能够对 count 进行操作。
需要注意的是,在使用互斥锁时,需要保证所有访问被锁定变量的线程都使用同一个互斥锁。否则,就会出现不同线程使用不同的锁进行操作,从而导致并发访问问题。