-
多线程同步
多线程之间存在的对同一全局变量读写的可能性。这时候多线程如果同时操作此变量,由于内存的读写均需要速度和寄存器的配合,可能会导致读写错误。
所谓的全局变量读写的区域,就被称为临界区。
为了防止此类错误,需要对临界区做线程的同步。 -
同步技术
(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 -
上述同步技术概要说明
(1) 读写锁用于读的情况特别多的,为了增加效率,使用读写锁。原因是互斥锁不论读写,临界区均不可操作。但是读写锁在读锁锁定时,还允许读操作,也就是读可以是并行的。
(2) 为何有了互斥锁,还用条件变量或者信号量?
互斥锁是锁住,但是还有种情况是全部的读操作都不可以再进行了,或者全部的写操作都不可以再进行了。这时候就需要用条件变量,也就是生产者-消费者模型。
(3) 条件变量和信号量的区别?
信号量比条件变量简单。条件变量需要自己写条件。但是信号量只需要设置好数量资源的初始仓位,增减法则,即可。判断条件是信号量自己做。
多线程同步技术概要
最新推荐文章于 2022-07-07 00:09:20 发布