lock-free CAS InterlockedCompareExchange volatile 疑问讨论

Rain7758 2011-03-03 08:04:07
疑问:

1,在多核或者多 CPU 系统下,即使原子操作也可能并行?

2,接上,在多核或者多 CPU 系统下,lock-free 是不是废了?或者必须保证操作的变量在内存中,才能互斥?

3,接上,使用 InterlockedCompareExchange 实现 lock-free 是不是必须申明共享变量为 volatile?

4,接上,即使 volatile 避免了寄存器,但是 cache 中的副本呢?InterlockedCompareExchange 保证会刷新(另一cpu的cache)吗?

我自己的看法:
1,并行
2,应该必须保证在内存
3,必须申明为 volatile
4,cache 的一致性由 cpu 保证
...全文
166 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rain7758 2011-03-04
  • 打赏
  • 举报
回复
谢谢楼上的,看了win核心编程,四个问题都有解
MD,又被铺天盖地的滥用术语误导了
单 CPU 实现 lock-free 的核心可以叫做“原子操作”
多核或者多 CPU 实现 lock-free 只能靠“原子访问”

我的回答都是对的
第3个问题win核心编程有特例:如果保证用指针访问则无需volatile
(作者有误导读者嫌疑,访问者未必“一直”用指针吧?)
smwhotjay 2011-03-03
  • 打赏
  • 举报
回复
你的问题,看win核心编程.多线程同步.讲的很详细.
数据集可视化效果见下方。 【数据集概况】 · 检测类别(中文):[火(fire)] · 训练集:2565 张 · 验证集:244 张 · 测试集:122 张 · 总计:2931 张 该数据集针对夜间道路环境中的火情检测需求,精准捕捉火源特征,为道路安全监控系统提供可靠的数据支持,具有显著的安全预警价值和实际应用意义。该数据集的训练集、验证集和测试集分别包含2565张、244张和122张图像,分布比例合理,能够有效支持模型的训练、验证和测试过程,确保模型性能的稳定性和可靠性。该数据集的标注工作严谨细致,火目标的边界框标注精准,与实际火源位置高度吻合,标注规范符合行业标准,为模型... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 58 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9537** mAP50-95 | 0.6455 Precision | 0.9156 Recall | 0.9168 train/box_loss | 1.0237 train/cls_loss | 0.5109 val/box_loss | 1.1818 val/cls_loss | 0.5480 【训练过程分析】 58 轮训练后 mAP50 达到 0.9537,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6455,和 mAP50 差距 0.31,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9156、Recall 0.9168,精召双高,模型对火的检测能力强。 ...

15,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧