Posts by Topic: ziglang

Chapter 5 - 异步 - 了解ziglang的异步是如何工作的
Chapter 5 - 异步 - 了解ziglang的异步是如何工作的

30/04/2023

title: "Chapter 5 - 异步" weight: 6 date: 2023-04-28 18:00:00 description: "Chapter 5 - 了解ziglang的异步是如何工作的" 警告:当前版本的编译器还不支持异步 Async 要对Zig的异步进行有效的理解,需要熟悉调用栈的概念。如果你以前没有听说过这个,请查看wikipedia页面。 <!-- TODO:实际上解释一下调用栈?--> 一个传统的函数调用包括三个方面: 用参数启动被调用的函数,推入函数的堆栈框架 将控制权转移到该函数 在函数完成后,将控制权交还给调用者,取回函数的返回值并弹出函数的堆栈框架 有了Zig的异步函数,我们可以做得更多,控制权的转移是一个持续的双向对话(也就是说,我们可以多次将控制权交给函数并收回)。正因为如此,在异步上下文中调用一个函数时必须要有特别的考虑;我们不能再像正常情况下那样推送和弹出堆栈框架(因为堆栈是不稳定的,"在...

Chapter 5 - 异步 - 了解ziglang的异步是如何工作的
Chapter 5 - 异步 - 了解ziglang的异步是如何工作的

30/04/2023

title: "Chapter 5 - 异步" weight: 6 date: 2023-04-28 18:00:00 description: "Chapter 5 - 了解ziglang的异步是如何工作的" 警告:当前版本的编译器还不支持异步 Async 要对Zig的异步进行有效的理解,需要熟悉调用栈的概念。如果你以前没有听说过这个,请查看wikipedia页面。 <!-- TODO:实际上解释一下调用栈?--> 一个传统的函数调用包括三个方面: 用参数启动被调用的函数,推入函数的堆栈框架 将控制权转移到该函数 在函数完成后,将控制权交还给调用者,取回函数的返回值并弹出函数的堆栈框架 有了Zig的异步函数,我们可以做得更多,控制权的转移是一个持续的双向对话(也就是说,我们可以多次将控制权交给函数并收回)。正因为如此,在异步上下文中调用一个函数时必须要有特别的考虑;我们不能再像正常情况下那样推送和弹出堆栈框架(因为堆栈是不稳定的,"在...

Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库
Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库

29/04/2023

title: "Chapter 2 - 标准模式" weight: 3 date: 2023-04-28 18:00:00 description: "Chapter 2 - 本节教程将详细介绍Zig编程语言的标准库." 自动生成的标准库文档可以在这里找到。安装ZLS也可以帮助你探索标准库,它为你提供了完成度。 Allocators 分配器 Zig标准库提供了一个分配内存的模式,它允许程序员准确地选择在标准库中如何进行内存分配--在标准库中没有分配在你背后发生。 最基本的分配器是[std.heap.page_allocator](https://ziglang.org/documentation/master/std/#A;std:heap.page_allocator)。每当这个分配器进行分配时,它都会向你的操作系统索取整页的内存;一个单一字节的分配可能会保留多个kibibytes。由于向操作系统索取内存需要一个系统调用,这对速度来说也是非常低效的。 在这里,我们分配了100个字节作为[]u8。注意defer是如何与free结合使用的--这是Zig中内存管理的一个常见模式...

Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库
Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库

29/04/2023

title: "Chapter 2 - 标准模式" weight: 3 date: 2023-04-28 18:00:00 description: "Chapter 2 - 本节教程将详细介绍Zig编程语言的标准库." 自动生成的标准库文档可以在这里找到。安装ZLS也可以帮助你探索标准库,它为你提供了完成度。 Allocators 分配器 Zig标准库提供了一个分配内存的模式,它允许程序员准确地选择在标准库中如何进行内存分配--在标准库中没有分配在你背后发生。 最基本的分配器是[std.heap.page_allocator](https://ziglang.org/documentation/master/std/#A;std:heap.page_allocator)。每当这个分配器进行分配时,它都会向你的操作系统索取整页的内存;一个单一字节的分配可能会保留多个kibibytes。由于向操作系统索取内存需要一个系统调用,这对速度来说也是非常低效的。 在这里,我们分配了100个字节作为[]u8。注意defer是如何与free结合使用的--这是Zig中内存管理的一个常见模式...

Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库
Chapter 2 - 标准模式 - 本节教程将详细介绍Zig编程语言的标准库

29/04/2023

title: "Chapter 2 - 标准模式" weight: 3 date: 2023-04-28 18:00:00 description: "Chapter 2 - 本节教程将详细介绍Zig编程语言的标准库." 自动生成的标准库文档可以在这里找到。安装ZLS也可以帮助你探索标准库,它为你提供了完成度。 Allocators 分配器 Zig标准库提供了一个分配内存的模式,它允许程序员准确地选择在标准库中如何进行内存分配--在标准库中没有分配在你背后发生。 最基本的分配器是[std.heap.page_allocator](https://ziglang.org/documentation/master/std/#A;std:heap.page_allocator)。每当这个分配器进行分配时,它都会向你的操作系统索取整页的内存;一个单一字节的分配可能会保留多个kibibytes。由于向操作系统索取内存需要一个系统调用,这对速度来说也是非常低效的。 在这里,我们分配了100个字节作为[]u8。注意defer是如何与free结合使用的--这是Zig中内存管理的一个常见模式...