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

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

作者: 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