多线程同步技术概要

  1. 多线程同步
    多线程之间存在的对同一全局变量读写的可能性。这时候多线程如果同时操作此变量,由于内存的读写均需要速度和寄存器的配合,可能会导致读写错误。
    所谓的全局变量读写的区域,就被称为临界区。
    为了防止此类错误,需要对临界区做线程的同步。

  2. 同步技术
    (1) 互斥锁pthread_mutex_t 类;
    https://blog.csdn.net/mengxiao12345678/article/details/119329402?spm=1001.2014.3001.5501
    (2) 读写锁pthread_rwlock_t类;
    https://blog.csdn.net/mengxiao12345678/article/details/119331121?spm=1001.2014.3001.5501
    (3) 条件变量pthread_cond_t类;
    https://blog.csdn.net/mengxiao12345678/article/details/119331405
    (4) 信号量sem_t类。
    https://blog.csdn.net/mengxiao12345678/article/details/119343117

  3. 上述同步技术概要说明
    (1) 读写锁用于读的情况特别多的,为了增加效率,使用读写锁。原因是互斥锁不论读写,临界区均不可操作。但是读写锁在读锁锁定时,还允许读操作,也就是读可以是并行的。
    (2) 为何有了互斥锁,还用条件变量或者信号量?
    互斥锁是锁住,但是还有种情况是全部的读操作都不可以再进行了,或者全部的写操作都不可以再进行了。这时候就需要用条件变量,也就是生产者-消费者模型。
    (3) 条件变量和信号量的区别?
    信号量比条件变量简单。条件变量需要自己写条件。但是信号量只需要设置好数量资源的初始仓位,增减法则,即可。判断条件是信号量自己做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值