1 第一个阶段--对象着色 1.1 分步 外部新增对象时会通过luaC_checkGC方法进行触发GC流程操作。当G(L)->GCdebt > 0时就会触发luaC_step...

1 第一个阶段--对象着色 1.1 分步 外部新增对象时会通过luaC_checkGC方法进行触发GC流程操作。当G(L)->GCdebt > 0时就会触发luaC_step...
1 暂停阶段 在创建VM时,初始GC状态为GCSpause。 1.1 GC触发条件 GC并不是一直在执行标记清除操作的,会等待内存涨到一个阈值才会触发操作。在GC周期开始前会...
1 GC状态 GC周期一般会有0至7这八个状态,另外还有一个中间态GCSinsideatomic是在atomic阶段执行过程出现的,所以严格来说有九个状态。 GCSpause...
1 如何判定对象是否需要GC? 在GC周期,从根节点进行遍历检查,对GC对象进行分类标记来达到增量回收的目的。 1.1 颜色标记 使用3种颜色:白、灰、黑。 白表示该对象没有...
1 创建的GC对象记录在了哪里? 字符串或table对象创建过程,会看到是通过luaC_newobj函数创建的,在此函数内会将对象指针放入g->allgc链表中。 通过搜索源...
1 带着问题找答案 GC对象有哪些? 创建的GC对象记录在了哪里? 如何判定对象是否需要GC? GC流程是怎样的? 自动GC是怎么实现的? 有什么参数可以干预自动GC? 2 ...
原文标题 Cheat-Proof Playout for Centralized and Distributed Online Games 作者 Nathaniel E. B...
1 非本地跳转 通过以上源码可以看到非c++和非posix情况下,是使用非本地跳转(setjmp/longjmp)实现异常处理的。 1.1 非本地跳转<setjmp.h>知识...
7 虚拟机 Lua 通过首先将程序编译为虚拟机的指令(“操作码”)然后执行这些指令来运行程序。 对于 Lua 编译的每个函数,它都会创建一个原型,其中包含一个包含函数操作...
3 值表示 Lua 是一种动态类型语言:类型附加到值而不是变量。 Lua 有八种基本类型:nil、boolean、number、string、table、function...
1 简介 Lua 诞生于一个学术实验室,作为内部软件开发的工具,但不知何故被世界各地的几个工业项目采用且现已广泛应用于游戏行业。 我们如何解释 Lua 的这种广泛使用?...
1 解决什么问题 使用Yacc可以构造出一个编译器的前端。 2 简述 Yacc表示“yet another compiler-compiler”,即“又一个编译器的编译 20...
1 设计结构图 2 lua5.0设计实现文档翻译 The Implementation of Lua 5.0 翻译1/3[https://www.jianshu.com/p/...
1 语言处理器 1.1 编译器 编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的、用另一种语言(目标语言)编写的程序。 1.2 解...
1 模版 target 通常为编译生成的文件名称,例如执行程序或中间产物Object。 prerequisite 作为创建target的一个或多个输入文件。 recipe 编...
1 解决什么问题 让make知道怎么去编译和链接生成一个应用程序。 2 怎么使用 在工程目录创建一个Makefile或makefile都可以,一般使用Makefile。也可以...
1 概要
1 概念 1.1 Coroutine对比多线程 有自己的堆栈 有自己的局部变量 有自己的指令指针 共享全局变量 任何指定时刻只有一个Coroutine在运行 2 特性 res...
1 TCP概念 TCP是一个复杂、可靠、面向连接的协议。TCP使用三路握手建立连接,使用四分组交换序列终止连接。一个TCP连接可处于11种状态之一。 1.1 可靠性 当TCP...
1 解决什么问题 让基类指针可以调用派生类的函数,达到多态的效果。设计抽象基类时,找出哪此操作行为与类型相关。有哪些操作行为必须根据不同的派生类而有不同的实现方式。这些操作行...