Non-Profit, International

Spirit unsterblich.

  • Programming Language Memory Models

    字数统计:10923
    这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Programming Language Memory Models 的英文原版的备份。本文是第二篇,重点阐述了 C++ 和 Java 对内存模型设计的历史,以及 ECMAScript 2017 的初步尝试。
  • Hardware Memory Models

    字数统计:6613
    这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Hardware Memory Models 的英文原版的备份。本文是第一篇,重点阐述了几个流行的 ISA(指令集架构)中如何实现缓存同步;第二篇则是总结了常见的支持多线程的语言中同步设施(内存模型)的设计;第三篇则讲述了 Go 的内存模型,Go 的内存模型已经于去年正式发布。
  • 硬件内存模型

    字数统计:10837
    这是 Go 语言现任领队 Russ Cox 在 2021 年写的文章 Hardware Memory Models 的翻译,虽然我对 Go 没什么兴趣,但在网上大概没有更好的从软件工程师的角度对多 CPU(现在也叫做多线程,或者多核心)架构并发编程的进行全面总结的文章了,因此在此提供中文版本。本文是第一篇,重点阐述了几个流行的 ISA(指令集架构)中如何实现缓存同步;第二篇则是总结了常见的支持多线程的语言中同步设施(内存模型)的设计;第三篇则讲述了 Go 的内存模型,Go 的内存模型已经于去年正式发布。
  • C++ 20 CPO 和 Ranges 新算法

    字数统计:2226
    在之前的 Ranges 文章中我称 Ranges 为重要改进,不仅仅是因为 Ranges 本身提供了容器无关的抽象,还因为 Ranges 带来了“新的”算法,解决了一些函数查找的历史问题。
  • WinUI 3 限制窗口最小宽高

    字数统计:535
    WinUI 3 软件开发中最无语的一件事就是限制窗口大小居然需要自己处理 Win32 消息。。。。。
  • WinUI 3 自定义标题栏

    字数统计:1331
    Windows 自定义标题栏一直是个麻烦问题,WinUI 3 毫不意外的继承了这个性质,由于 WinUI 3 是纯粹的 Win32 应用,因此和所有 Win32 应用一样使用系统窗口,造成了许多问题,这两天踩了许多坑后在此分享一下经验。
  • Windows 禁止应用多实例

    字数统计:1003
    “简单”研究了一下 Windows 如何禁止应用开启多实例,实际有两个通用方案:使用 CreateFileW 在临时文件夹中创建一个独占的文件实现互斥以及使用 CreateMutexExW 创建一个独占的具名互斥锁实现互斥;需要监听端口的程序使用 bind 时也自带这种效果,这些方法都能实现原子的互斥。