开发者社区> 问答> 正文

[@小川游鱼][¥20]什么是多线程环境下的伪共享(false sharing)?

问题来自Java技术沙龙的李博
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
李博 bluemind 2018-12-13 13:25:25 2597 0
1 条回答
写回答
取消 提交回答
  • 1.阿里云大学讲师,主讲《微服务Spring Cloud设计与开发实战》《MongoDB高级实战》等课程 2.MongoDB中文社区专家 3.《MongoDB实战》第2版译者 5.吉林大学计算机科学学士、上海交通大学硕士

    1、False sharing假共享(伪共享)主要是产生在多线程多核心CPU共享缓存架构中
    2、单个缓存行在英特尔架构上的大小为64字节(在不同平台上,范围从32字节到128),x86-64机器以原子方式使这块内存无效。 不同的内核可以将数据从主内存写入同一缓存。 并发读取期间缓存一致性没有问题,
    3、但写入是一种更复杂的操作 - 它会对一致性协议产生很高的负担。 False sharing虚假共享是指存储器单元不同但物理上落在同一缓存线上时。
    4、False sharing假共享可能是性能下降的原因(线程必须抵制不同的物理CPU,但在高负载应用程序中它不是问题 - 操作系统会调度线程)。 对局部变量的写入操作可能成本很高。
    5、False sharing假共享是自动同步缓存协议的固有功能,也可以存在于分布式文件系统或数据库等环境中,但目前流行仅限于RAM缓存。

    2019-07-17 23:20:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
Android开发之多进程架构 立即下载
Android应用-启动速度和内存优化实践 立即下载