阅读量:2
在C语言中,可以使用互斥锁(Mutex)来实现多线程的加锁。
使用互斥锁的一般步骤如下:
- 在程序中定义一个互斥锁变量,可以使用pthread_mutex_t类型的变量来表示互斥锁。
- 在需要保护共享资源的地方,使用pthread_mutex_lock函数对互斥锁进行加锁操作。
- 对共享资源进行操作。
- 使用pthread_mutex_unlock函数对互斥锁进行解锁操作。
示例代码如下:
#include <stdio.h> #include <pthread.h> pthread_mutex_t mutex; // 定义互斥锁 void* thread_func(void* arg) { pthread_mutex_lock(&mutex); // 加锁 // 对共享资源进行操作 printf("Thread #%ld is working...\n", (long)arg); pthread_mutex_unlock(&mutex); // 解锁 return NULL; } int main() { pthread_t thread1, thread2; pthread_mutex_init(&mutex, NULL); // 初始化互斥锁 pthread_create(&thread1, NULL, thread_func, (void*)1); pthread_create(&thread2, NULL, thread_func, (void*)2); pthread_join(thread1, NULL); pthread_join(thread2, NULL); pthread_mutex_destroy(&mutex); // 销毁互斥锁 return 0; }
在上述示例中,定义了一个互斥锁变量mutex,并在两个线程中对互斥锁进行加锁和解锁操作。这样可以确保同一时间只有一个线程可以访问共享资源。