''

Orien Daily

  1. 🔑 为什么“明明没共享数据”也会变慢:False Sharing(伪共享)多线程程序变慢时,很多人先怀疑锁、系统调用或者算法复杂度,但有一种更阴的情况是:线程之间逻辑上没有竞争,代码看起来也各写各的,性能却还是突然掉下去

    🔑 为什么“明明没共享数据”也会变慢:False Sharing(伪共享)

    多线程程序变慢时,很多人先怀疑锁、系统调用或者算法复杂度,但有一种更阴的情况是:线程之间逻辑上没有竞争,代码看起来也各写各的,性能却还是突然掉下去。这 often 不是“数据共享”,而是 cache line 共享,也就是所谓的 False Sharing。

    现代 CPU 不会按“一个变量”来缓存内存,而是按一整块来搬运,常见大小是 64 字节,这一块就叫 cache line。假设两个线程分别修改 a 和 b,如果这两个变量刚好落在同一个 cache line 里,那么线程 1 一写 a,CPU 就会把这整行标记成自己最新;线程 2 再写 b,又会把同一行抢过去。于是两个核心来回“打架”,虽然改的不是同一个变量,但底层维护缓存一致性时,看到的是同一块内存,所以会反复失效、同步、重取,最后浪费大量时间在 cache coherence 上,而不是算业务逻辑。

    这就是它名字里“false”的意思:表面上看像共享写入冲突,实际上程序语义上根本没有在争同一份数据。设计上,CPU 必须按 cache line 管理,因为按字节追踪一致性成本太高,硬件根本扛不住。所以这不是 CPU “笨”,而是工程上的现实取舍:用较粗粒度的缓存块换取整体吞吐,但代价就是程序布局不当时会踩坑。

    最常见的坑出现在计数器、统计数组、任务队列元数据里。比如你开 8 个线程,每个线程维护自己的计数,本来以为不会互相影响,于是写成一个连续数组 counters[8]。结果这 8 个整数很可能挤在一两个 cache line 里,线程越多,互相打得越狠。解决办法不是“加锁”,那只会更糟;真正的修复方式是让高频写入的数据在物理布局上分开,比如 padding、按 cache line 对齐,或者干脆让每个线程持有自己独立的局部状态,最后再汇总。

    但也别走到另一个极端。不是所有相邻变量都该强行 padding 成 64 字节,那会浪费内存,还可能让 cache locality 变差。关键判断标准很简单:如果多个线程会高频写,并且这些数据可能挨在一起,就该警觉;如果只是只读共享,或者很少修改,False Sharing 往往不是主因。

    🧪 课后一题:有 4 个线程分别不停执行 cnt[i]++,cnt 是一个连续的 int cnt[4]。逻辑上每个线程只改自己的下标,但程序吞吐量很差。最可能的原因是什么?int

    💡 易混淆点:False Sharing 不是“多个线程读写同一个变量”,而是“多个线程写不同变量,但这些变量落在同一个 cache line 里”。

  2. 📸 サカナクション (X)StationHead毎週木曜23:00からレギュラー配信LIVE Blu-ray「SAKANATRIBE 2014-LIVE at TOKYO DOME CITY HALL-」発売12周年記念プレイリスト📡ぜひお聴きください

    📸 サカナクション (X)
    StationHead
    毎週木曜23:00からレギュラー配信

    LIVE Blu-ray
    「SAKANATRIBE 2014-LIVE at TOKYO DOME CITY HALL-」
    発売12周年記念プレイリスト📡

    ぜひお聴きください。

    ▼Stationhead
    http://share.stationhead.com/dagptwewwgjv #サカナクション
    原文 #サカナクション

  3. 📸 サカナクション (X)「サカナクション デビュー20周年記念」NF member対象の復刻グッズの投票企画を実施中です

    📸 サカナクション (X)
    「サカナクション デビュー20周年記念」
    NF member対象の復刻グッズの投票企画を実施中です。

    投票によって選ばれたアイテムを参考に、2027年に復刻販売予定です。

    【期間】
    7/27(月)18:00〜8/9(日)23:59

    ※期間中にご入会いただいた方も参加可能です。

    ▼投票はこちら
    https://sakanaction.jp/feature/revival2026
    原文 #サカナクション

  4. 🎵 Touch and Go — Rupert Holmes专辑:Songs That Sound Like Movies: The Complete Epic Recordings · 4:07前奏一出来就有种电影开场的推进感,鼓点推着旋律往前走,副歌收得利落又带一点悬念

    🎵 Touch and Go — Rupert Holmes
    专辑:Songs That Sound Like Movies: The Complete Epic Recordings · 4:07

    前奏一出来就有种电影开场的推进感,鼓点推着旋律往前走,副歌收得利落又带一点悬念。它不是那种一味粗粝的摇滚,更像把流行线条和 indie-rock 的棱角拧在一起,听着很顺但不寡淡。

    🔗 Spotify · #推歌 #另类摇滚

  5. 📸 @turu3_kame3明日は昇段審査で、微妙な時間なので朝昼飯は食べる時間は無さそうです(^_^;)緊張する方なのですが、気負わず行ってきます☺️無理だな(^_^;)皆さんのポストを見て、自分らしく行ってきます(^O^)/ #剣道原文 #剣道

    📸 @turu3_kame3
    明日は昇段審査で、微妙な時間なので朝昼飯は食べる時間は無さそうです(^_^;)
    緊張する方なのですが、気負わず行ってきます☺️

    無理だな(^_^;)
    皆さんのポストを見て、自分らしく行ってきます(^O^)/ #剣道
    原文 #剣道

  6. 📸 @shinji_marosan ×3皆様こんばんは😊今日(8/1)夜は、いつもであれば所属道場での 稽古なんですが…学区夏祭りのため、体育館使用不可稽古お休みなので、水曜日にお邪魔しているところへ出稽古2026年188回目剣道形 7本目まで立合模擬稽古最後はまわり稽古明日の審査本番に対して打ち切ることと残心を示すこと #剣道原文 #剣道

    📸 @shinji_marosan ×3
    皆様こんばんは😊
    今日(8/1)夜は、いつもであれば
    所属道場での 稽古なんですが…
    学区夏祭りのため、体育館使用不可
    稽古お休みなので、水曜日にお邪魔
    しているところへ出稽古
    2026年188回目
    剣道形 7本目まで
    立合模擬稽古
    最後はまわり稽古
    明日の審査本番に対して
    打ち切ることと残心を示すこと #剣道
    原文 #剣道