社区
C++ 语言
帖子详情
两个线程使用queue队列必须要加锁吗?
zmok8866
2016-05-26 06:01:30
一个线程是生产者,一个线程是消费者,只有这两个队列。
也就是一个线程存入数据,一个线程读取并删除数据。
队列都是先进先出的,如果不加锁,似乎也可以顺利存取。
问:在这种只有两个线程的情况下,也必须给queue加锁吗?
...全文
5220
12
打赏
收藏
两个线程使用queue队列必须要加锁吗?
一个线程是生产者,一个线程是消费者,只有这两个队列。 也就是一个线程存入数据,一个线程读取并删除数据。 队列都是先进先出的,如果不加锁,似乎也可以顺利存取。 问:在这种只有两个线程的情况下,也必须给queue加锁吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Robin.zhanG
2019-08-26
打赏
举报
回复
无锁环形队列,了解一下
chain78
2019-02-18
打赏
举报
回复
引用 6 楼 赵4老师 的回复:
必须要加
一个线程读取,一个线程写入,也要加锁吗?
qq_43579080
2019-02-08
打赏
举报
回复
1
当一端写入时,如果此时数据没写完整,你读取的话会造成读取的数据是不完整的
registercsdn
2018-11-22
打赏
举报
回复
引用 7 楼 lm_whales 的回复:
问题出在队列可能为空
你好, @lm_whales,
你在这里提高空队列,
假如我在读之前加一条
if(!queue.empty()){
pop and read();
}
是不是就可以了,不需要加锁了,也能实现多线程,一个读,一个写?
lm_whales
2016-05-29
打赏
举报
回复
队列读取,数据量没有多大吧 数据小的话,直接读出来就是了 数据大的话,队列里面存储指针就可以了
lm_whales
2016-05-29
打赏
举报
回复
问题出在队列可能为空
赵4老师
2016-05-27
打赏
举报
回复
必须要加
ztenv
版主
2016-05-27
打赏
举报
回复
加锁吧,简单,虽然损失了一些效率。
paschen
版主
2016-05-27
打赏
举报
回复
肯定要加锁, 这和顺序存取没关系
dustpg
2016-05-26
打赏
举报
回复
没事就是运气好,出事就是运气差。两端同时写必须加锁,不加锁 = 作死。 一读一写的话不怕读取错误数据可以不加
zmok8866
2016-05-26
打赏
举报
回复
引用 1 楼 dustpg 的回复:
两个独立的队列何来“临界区”?
不好意思,写错了。是两个线程共用一个队列,一个线程负责存入数据,另一个线程取出和删除数据
dustpg
2016-05-26
打赏
举报
回复
两个独立的队列何来“临界区”?
Python多
线程
本课程主要讲解
使用
Python中的_thread和threading模块实现多
线程
编程,以及
队列
Queue
的
使用
。课程中
使用
队列
实现了生产者和消费者的程序编写。 重点:_thread和threading、
Queue
qt多
线程
访问同一变量_何时用多
线程
?多
线程
需要
加锁
吗?
线程
数多少最合理?
一、什么时候应该
使用
多
线程
?今天看到一个问题,突然有感而发,想聊下这个话题。不知道大家有没有想过这个问题,就是什么时候我该
使用
多
线程
呢?
使用
多
线程
就一定会提升系统性能吗?1、其实是否应该
使用
多
线程
在很大程度上取决于应用程序的类型。计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的
线程
中受益, 单CPU下, 多
线程
不会带来任何性能上的提升, ...
Python学习 Day54
Queue
线程
安全
队列
03
一、
线程
间的通信 Condition版的生产者与消费者模式 函数 描述 acquire() 上锁 release() 解锁 wait() 将当前
线程
处于等待状态,并且会释放锁。可以被其他
线程
使用
notify()和noti_all()函数唤醒。被唤醒后继续等待上锁,上锁后继续执行下面的代码 notify() 通知某个正等待的
线程
,默认是第一个等待的
线程
notify_all() 通知所有正在等待的
线程
。notify()和notif_all()需要在release()之前调用
多
线程
之无锁
队列
1. 什么是无锁
队列
字面意思理解,就是
两个
线程
同步操作某种数据时,不能
加锁
; 因为
加锁
是会拖慢效率,造成延时的; 2. 什么场景需要用到无锁
队列
呢? 最典型的是生产者和消费者模型,要求生产者生产的同时,进行消费,这就要求足够的低延时,此时可以
使用
无锁
队列
; 比如:
线程
A生产 1,2,3,4…
线程
B对生产出来的数相加,要求效率足够高,不能用锁,此时就可以用无锁
队列
。 3. 无锁
队列
的实现 #d...
消息
队列
与无锁
队列
实现
消息
队列
与无锁
队列
实现
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章