c语言多线程多核cpu没有跑满,关于多核和多CPU环境中的c:mmap线程安全

对于共享内存,特别是在C语言中的mmap方面,我对多核和多CPU环境之间的实际问题有些困惑。

我有一个利用mmap在2个进程之间共享多个内存段的应用程序。每个进程都可以访问:

状态和控制内存段

原始数据(最多8个独立的原始数据缓冲区)

状态和控制段实际上用作IPC。即,它可以表示缓冲区1准备好接收数据,或者缓冲区3准备好处理,或者状态和控制内存段在被父级或子级等更新时被锁定。

我的理解是,如果我错了,请纠正我,是在单板PC类型基础架构上的多核CPU环境中,mmap是安全的。也就是说,无论CPU中有多少内核,RAM都只能在任何时候被单个内核(或进程)访问。

这种单进程RAM访问的假设是否也适用于多CPU系统?也就是说,一个具有多个CPU的PC样式板(我猜每个CPU内有多个内核)。

如果没有,我将需要认真考虑我的逻辑,以允许使用多CPU的单板机!

任何想法将不胜感激!

PS-单板是指一个独立的PC风格的系统。这不包括大型机之类...只是为了澄清:)

您的假设是完全错误的。 如果这是正确的,那么我们就不需要慢速指令,例如原子增量或原子比较交换,并且并发编程会容易得多(效率更低)。

RAM is only ever accessed by a single core (or process) at any one time.

退后一步,考虑一下您的假设手段。从理论上讲,是的,这句话是正确的,但我认为这并不意味着您所认为的意思。除了"如果两个CPU同时写入同一个地址,内存将不会着火",您没有其他可以得出的实际

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值