美文网首页
系统编程-------线程编程----线程互斥锁

系统编程-------线程编程----线程互斥锁

作者: Hassan_chao | 来源:发表于2017-01-09 08:08 被阅读11次

线程互斥锁

互斥锁pthread_mutex_t

//用宏初始化
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex;

参数:

返回值:

pthread_mutex_inti;初始化互斥锁

pthread_mutex_init(&mutex,NULL);

参数:

  • &munext: 互斥锁
  • 指向pthread_mutex_attr的指针;NULL为默认属性

返回值:

pthread_mutex_lock;互斥锁获取

int pthread_mutex_lock(pthread_mutex_t *mutex)

参数:

返回值:

pthread_mutex_unlock;互斥锁解锁

int pthread_mutex_unlock(pthread_mutex_t *mutex)

参数:

返回值:

//互斥锁的使用
#include <stdio.h>
#include <pthread.h>

// 线程互斥锁
pthread_mutex_t mutex;

// 线程1的线程函数
void *thread_func1(void *arg);
// 线程2的线程函数
void *thread_func2(void *arg);

int main(int argc, char *argv[])
{
    pthread_t thread_id1;
    pthread_t thread_id2;

    // 1.初始化线程互斥锁
    pthread_mutex_init(&mutex, NULL);
    
    pthread_create(&thread_id1, NULL, thread_func1, NULL);
    pthread_create(&thread_id2, NULL, thread_func2, NULL);
    
    pthread_join(thread_id1, NULL);
    pthread_join(thread_id2, NULL);
    
    printf("main thread exit...\n");

    return 0;
}

// 注意:互斥锁的获取和释放必须成对出现
void *thread_func1(void *arg)
{
    // 获取互斥锁
    pthread_mutex_lock(&mutex);
    
    printf("thread 1...\n");
    
    // 释放互斥锁
    pthread_mutex_unlock(&mutex);
}

void *thread_func2(void *arg)
{
    pthread_mutex_lock(&mutex);
    
    printf("thread 2...\n");
    
    pthread_mutex_unlock(&mutex);
}

相关文章

网友评论

      本文标题:系统编程-------线程编程----线程互斥锁

      本文链接:https://www.haomeiwen.com/subject/rvtcbttx.html