温馨提示×

c语言多线程加锁的方法是什么

小亿
100
2024-01-30 15:38:13
栏目: 编程语言

在C语言中,可以使用互斥锁(Mutex)来实现多线程的加锁。

使用互斥锁的一般步骤如下:

  1. 在程序中定义一个互斥锁变量,可以使用pthread_mutex_t类型的变量来表示互斥锁。
  2. 在需要保护共享资源的地方,使用pthread_mutex_lock函数对互斥锁进行加锁操作。
  3. 对共享资源进行操作。
  4. 使用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,并在两个线程中对互斥锁进行加锁和解锁操作。这样可以确保同一时间只有一个线程可以访问共享资源。

0