互斥锁,读写锁

本文详细介绍了线程互斥的两种方式:互斥锁和读写锁。通过实例演示了如何使用互斥锁实现多线程同步,以及读写锁在读写操作中的应用,强调了互斥锁在读取和修改资源时的互斥特性,而读写锁允许多个线程同时读取但仅允许一个线程写入。
摘要由CSDN通过智能技术生成

一、线程互斥方式。  ---  互斥锁
1、什么是互斥锁?特点怎么样?
互斥锁是专门用于处理线程之间互斥的一种方式,它有两种:上锁状态/解锁状态。
如果互斥锁处于上锁状态,那么再上锁就会阻塞,直到这把锁解开之后,才能上锁。
如果互斥锁处于解锁状态,那么再解锁依然可以的,不会阻塞。

2、 互斥锁函数接口?
1)定义互斥锁变量   -> 数据类型: pthread_mutex_t
   pthread_mutex_t m;

2)初始化互斥锁。  -> pthread_mutex_init()  -> man 3 pthread_mutex_init
动态初始化:
头文件:
    #include <pthread.h>

原型:
      int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);

参数:
    mutex:互斥锁变量的地址。
    mutexattr:普通属性,填NULL。

返回值:
    成功:0
    失败:非0

静态初始化:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;   
只要把该宏定义赋值给互斥锁变量,就等价于初始化了这把互斥锁。

========================
也就是说:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

等价于
pthread_mutex_t m;
pthread_mutex_init(&m,NULL);

3)上锁。  -> pthread_mutex_lock()  -> man 3 pthread_mutex_lock
头文件:
    #include <pthread.h>

原型:
    int pthread_mutex_lock(pthread_mutex_t *mutex);

参数:
    mutex:互斥锁变量的地址。

返回值:
    成功:0
    失败:非0

4)解锁。  -> pthread_mutex_unlock()  -> man 3 pthread_mutex_unlock
头文件:
    #include <pthread.h>

原型:
    int pthread_mutex_unlock(pthread_mut

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值