Zig's new plan for asynchronous programs
5 months ago
- #Programming Languages
- #Asynchronous I/O
- #Zig
- Zig语言对异步I/O的新方案旨在解决函数着色问题,使代码无论使用同步还是异步I/O都能正确执行。
- 新设计将异步操作隐藏在名为Io的通用接口后,该接口作为参数传递给需要I/O操作的函数。
- 系统提供两种内置Io接口实现:Io.Threaded(支持可选线程的同步操作)和Io.Evented(基于事件循环的异步I/O)。
- 库作者可以编写同时兼容同步和异步I/O的函数,无需预知用户将选择哪种实现。
- async()函数在使用Io.Evented时可实现并行操作,而Io.Threaded则会顺序执行。
- 对于需要并发执行的场景(如监听连接和处理用户输入),需使用asyncConcurrent()函数。
- 该设计延续了Zig的极简哲学,避免为异步代码引入特殊语法,充分利用现有控制流原语。
- Zig的异步I/O仍处于实验阶段,Io.Evented正在持续开发中,并计划支持WebAssembly。
- Zig正朝着1.0版本迈进,异步I/O的实现是其重要里程碑。