![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux线程
cpp加油站
公众号:cpp加油站,专注分享linux下cpp知识
展开
-
多线程同步
1.linux使用多线程同步的方法1)互斥锁:当线程A锁定了互斥变量时,线程B再去锁定时就会被挂起,直到A解锁。注意:当线程要不断的去轮询检查某个条件以判断是否可以操作需同步的数据时,可使用条件变量提高效率。demo如下:#include <stdio.h>#include <pthread.h>#include <unistd.h>pthre...原创 2019-05-08 16:59:18 · 108 阅读 · 0 评论 -
线程浅析
1. 线程的基本属性每个线程都包含有表示执行环境所必需的信息,其中包括进程中标识线程的线程id,一组寄存器器值,栈,调度优先级和策略,信号屏蔽字,error变量以及线程私有数据。一个进程的所有信息对该进程的所有线程都是共享的,包括代码段,静态区,堆,栈以及文件描述符。2. 线程部分函数int pthread_equal(pthread_t tid1, pthread_t tid2); //...原创 2019-05-17 19:31:31 · 115 阅读 · 0 评论 -
线程池
1. 设计线程池遵循的规则我们应该设计通用的线程池,那么该怎么设计呢,其实就是通过回调函数,将线程函数和参数都用void*来表示,这样用户可以定义自己的回调函数,而参数的话可以放在结构体里面,这样每个客户都可以使用该线程池来调用自己的函数,并且可以传递多个入参。2. 什么是线程池顾名思义,就是多个线程事先已经建立好了,放在一个池子里,当有需要的时候拿来用,不需要的时候还到池子里去。3. 线...原创 2019-05-23 16:43:33 · 100 阅读 · 0 评论 -
自旋锁
1. 什么是自旋锁自旋锁与互斥锁有点类似,但是自旋锁不会引起调用者阻塞,如果自旋锁已经被别的执行单元保持,调用者会一直循环检查该自旋锁的保持者是否已经释放了锁,所以才叫自旋。2. 自旋锁的特点同时自旋锁使用者一般保持锁时间是非常短的,所以某些情况下,选择自旋而不是睡眠是很有必要的,自旋锁的效率远高于互斥锁。如果被保护的共享资源需要在中断上下文访问,就必须使用自旋锁。在单cpu且不可抢占的...原创 2019-06-05 10:57:08 · 202 阅读 · 0 评论 -
多线程之无锁队列
1. 什么是无锁队列字面意思理解,就是两个线程同步操作某种数据时,不能加锁;因为加锁是会拖慢效率,造成延时的;2. 什么场景需要用到无锁队列呢?最典型的是生产者和消费者模型,要求生产者生产的同时,进行消费,这就要求足够的低延时,此时可以使用无锁队列;比如:线程A生产 1,2,3,4…线程B对生产出来的数相加,要求效率足够高,不能用锁,此时就可以用无锁队列。3. 无锁队列的实现#d...原创 2019-05-28 15:10:20 · 1313 阅读 · 0 评论