摘要: 同步代码和异步代码 一般而言,代码可分为同步与异步两类。两者同样需要等待操作完成:同步会阻塞当前线程,直至操作结束后再继续执行后续逻辑;异步则不阻塞当前线程,而是在发起操作时预先注册完成后的处理逻辑,待操作完成时由操作本身或外部机制触发该逻辑。 于是这就带来一个问题,那就是同步代码和异步代码的写法是 阅读全文
posted @ 2025-09-18 00:42 hez2010 阅读(4716) 评论(10) 推荐(65)
摘要: GC 的 STW 问题 GC,垃圾回收器,本质上是一种能够自动管理自己分配的内存的生命周期的内存分配器。这种方法被大多数流行编程语言采用,然而当你使用垃圾回收器时,你会失去对应用程序如何管理内存的控制。C# 允许在自动控制内存的基础之上局部对内存进行手动控制,但是自动控制仍然是主要的场景。 然而 G 阅读全文
posted @ 2025-05-22 00:29 hez2010 阅读(4836) 评论(25) 推荐(65)
摘要: 前言 .NET NativeAOT 想必不少开发者都已经很熟悉了,它可以将 .NET 程序集直接编译到原生的机器代码,从而可以脱离 VM 直接运行。简单的一句 dotnet publish -c Release -r <rid> /p:PublishAot=true 就可以做到。 在编写 C++ 程 阅读全文
posted @ 2025-04-07 22:55 hez2010 阅读(3499) 评论(10) 推荐(49)
摘要: 前言 什么?用 C# 插值字符串处理器写一个输入用的 sscanf?你确定不是输出用的 sprintf? 我猜不少读者看到标题后大概会有上述的想法。然而我们这里还真就是实现 sscanf,而不是 sprintf。 插值字符串处理器 C# 有一个特性叫做插值字符串,使用插值字符串,你可以自然地往字符串 阅读全文
posted @ 2025-02-16 17:06 hez2010 阅读(1841) 评论(6) 推荐(31)
摘要: Brainfly: 用 C# 类型系统构建 Brainfuck 编译器 阅读全文
posted @ 2025-01-31 23:27 hez2010 阅读(1825) 评论(6) 推荐(14)
摘要: 本系列为 RyuJIT 教程,将分为多篇进行更新发布,旨在给对 .NET 编译器有兴趣、以及希望参与 .NET JIT 编译器开发工作的人提供一些参考资料。 阅读全文
posted @ 2024-12-09 20:59 hez2010 阅读(1457) 评论(13) 推荐(28)
摘要: 前言 预计在 2024 年 11 月,C# 13 将与 .NET 9 一起正式发布。今年的 C# 更新主要集中在 ref struct 上进行了许多改进,并添加了许多有助于进一步提高生产力的便利功能。 本文将介绍预计将在 C# 13 中添加的功能。 注意:目前 C# 13 还未正式发布,因此以下内容 阅读全文
posted @ 2024-07-27 01:16 hez2010 阅读(4613) 评论(11) 推荐(32)
摘要: 前言 Windows 自从很久以来就有一个叫做 COM 的 Native ABI。这是一套面向对象的 ABI,在此之上 Windows 基于 COM ABI 暴露了各种各样的 API,例如 Management API、Shell API 和 DirectX API 就是典型。COM 自然不仅局限于 阅读全文
posted @ 2024-02-21 19:51 hez2010 阅读(3451) 评论(2) 推荐(17)
摘要: .NET NativeAOT 指南 随着 .NET 8 的发布,一种新的“时尚”应用模型 NativeAOT 开始在各种真实世界的应用中广泛使用。 除了对 NativeAOT 工具链的基本使用外,“NativeAOT”一词还带有原生世界的所有限制,因此您必须知道如何处理这些问题才能正确使用它。 在这 阅读全文
posted @ 2024-01-31 18:00 hez2010 阅读(5514) 评论(13) 推荐(61)
摘要: 背景 2008 年前后的 Midori 项目试图构建一个以 .NET 为用户态基础的操作系统,在这个项目中有很多让 CLR 以及 C# 的类型系统向着适合系统编程的方向改进的探索,虽然项目最终没有面世,但是积累了很多的成果。近些年由于 .NET 团队在高性能和零开销设施上的需要,从 2017 年开始 阅读全文
posted @ 2022-11-01 16:35 hez2010 阅读(7258) 评论(48) 推荐(106)