![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程相关知识
qq_40888486
这个作者很懒,什么都没留下…
展开
-
Linux条件变量的使用
1. 条件变量的原理条件变量不是锁,但是条件变量可以阻塞线程,一般将条件变量和互斥锁共同使用,其中互斥锁是为了保护一块区域,条件变量则是用于阻塞线程。一般条件变量的工作方式可以概括为2步(1)条件不满足,阻塞线程。(2)条件满足时,通知线程开始工作2.条件变量常用的函数1.定义条件变量pthread_cond_t cond;2.初始化条件变量pthread_cond_init( pthread_cond_t *restrict cond; const pt...原创 2020-09-13 22:19:35 · 622 阅读 · 0 评论 -
Linux读写锁的使用
1. 读写锁介绍读写锁的类型可以分为读锁和写锁,以读方式给数据加锁—读锁。以写方式给数据加锁—写锁。但是读写锁是一把锁,每个线程只可以带一个锁类型。特性:(举例说明)1. 线程A加读锁成功,又来了三个线程,做读操作,三个线程再次加锁成功。———结论:读时共享,并行处理2.线程A加写锁成功,又来了三个线程,做读操作,三个线程再次加锁失败。———结论:写时独占3.线程A加锁成功,又来了线程B加写锁阻塞,又来了C线程加读锁阻塞。———结论:(1)读写不能同时进行,(2)写的优先级高原创 2020-08-30 22:51:21 · 271 阅读 · 0 评论 -
Linux互斥锁的使用
目录互斥锁原理1. 互斥锁原理如上图所示:如果多个线程要访问一段共享资源的内存区域时,其中一个线程(如图中线程1)首先读取共享区域时,会在共享区域外设置一把互斥锁,其它线程阻塞在互斥锁处,线程1结束共享资源的访问后,会解锁该内存区域,此时其它的线程才可以继续访问共享资源的内存区域。本来多线程访问数据时是并行访问内存区域的,加上互斥锁后变为串行处理。多线程编程是建议使用互斥锁,这样可以对公共区域的数据进行保护。互斥锁的缺点就是串行,数据访问的效率会有一定的降低。2. 互斥锁的相关函数原创 2020-08-28 23:12:09 · 599 阅读 · 0 评论 -
Linux线程同步
目录介绍:原因:方法:介绍:多个线程在操作一个数据共享区域时,一些增删改查的操作可能造成内存区域数据的改变,从而导致其它线程读取的数据不准确,线程同步就是通过特定的方法来避免这些原因导致数据的不准确。原因:发生数据改变的原因主要有:资源共享,多线程共享一块资源空间。 调度随机,内存调度是随机的,这样会导致访问数据时会出现竞争 ...原创 2020-08-28 22:26:47 · 83 阅读 · 0 评论