首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
C++
C++菜鸡关于 C++多线程的疑问
XIIPanda
·
2023-11-15 17:55:27 +08:00
· 1416 次点击
这是一个创建于 398 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近看一个关于 C++无锁窃取队列的项目,项目地址为:
https://github.com/ConorWilliams/ConcurrentDeque/tree/main
,在项目代码里面 RingBuff 的 store 操作使用了 std::move ,在扩容期间,如果有窃取者线程进行 steal()操作且旧的 RingBuff 的 t 索引的任务已经被移动到新的 RingBuff ,那么窃取者线程获取的任务就是一个已经被移动了的任务,如果 steal()中的_top.compare_exchange_strong(t, t + 1, seq_cst, relaxed)执行成功,是不是就意味着出现了任务丢失的情况?
队列
线程
窃取
关于
2 条回复
•
2023-11-15 20:08:52 +08:00
1
misdake
2023-11-15 19:57:33 +08:00 via Android
1
resize 的实现是循环 ppt->store(i, load(i)),load 得到的是复制,move 了也没问题,不会修改原值
2
XIIPanda
OP
2023-11-15 20:08:52 +08:00
@
misdake
#1 懂了,谢谢大佬
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
5283 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms ·
UTC 07:38
·
PVG 15:38
·
LAX 23:38
·
JFK 02:38
Developed with
CodeLauncher
♥ Do have faith in what you're doing.