以下内容转载自 https://www.toutiao.com/i6719284510678073870/
鲁稚的阳台2019-07-30 10:55:37
虽然我们没有翅膀,无法像天上的鸟儿飞得那样高去欣赏世界,但是,我们有智慧、有能力借助能飞上天空的相机去俯瞰美丽的世界,欣赏美丽的风光……
以下内容转载自 https://www.toutiao.com/i6719284510678073870/
鲁稚的阳台2019-07-30 10:55:37
虽然我们没有翅膀,无法像天上的鸟儿飞得那样高去欣赏世界,但是,我们有智慧、有能力借助能飞上天空的相机去俯瞰美丽的世界,欣赏美丽的风光……
以下内容转载自 https://www.toutiao.com/i6695523214673576452/
所谓“震撼”一定是内心受到了强烈的冲击,从而引起精神或情绪的剧烈起伏。这种感受远比“惊讶”、“感动”等来的强烈。
能让人感觉“震撼”的建筑一定是因为某些方面做到了当时的极致,让人完全意想不到,如无比的宏伟、奢华、令人脑洞大开、引领时代、……。脱离了“集权”的现代建筑一般不会靠宏伟来取胜,更多的是靠别出心裁、引领时代的理念。
原创跃马酒馆小招待2020-09-16 13:33:12
大家好,本文承接上一篇文章对**《指环王》**历史的梳理,这次从更加激动人心的第二纪元开始将整个魔戒故事以编年体的方式进行叙述。
原创跃马酒馆小招待2020-09-10 11:48:07
许多朋友反应对于整个**《指环王》的历史脉络不太熟悉,导致对我的文章看得云里雾里,那么今天我就尝试梳理一下从伊露维塔创世纪开始,到《精灵宝钻》故事的完整时间线,方便那些对《指环王》历史**感兴趣的小伙伴查阅。
GC 中最繁杂的 mark 部分已经谈完了。剩下的东西很简单。今天一次可以写完。
sweep 分两个步骤,一个是清理字符串,另一个是清理其它对象。看代码,lgc.c 573 行:
今天来说说 write barrier 。
在 GC 的扫描过程中,由于分步执行,难免会出现少描了一半时,那些已经被置黑的对象又被修改,需要重新标记的情况。这就需要在改写对象时,建立 write barrier 。在扫描过程中触发 write barrier 的操作影响的对象被正确染色,或是把需要再染色的对象记录下来,留到 mark 的最后阶段 atomic 完成。
今天来看一下 mark 过程是怎样实现的。
所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。
有了前几天的基础,我们可以从顶向下来读 lua gc 部分的代码了。
我们知道,lua 对外的 API 中,一切个 gc 打交道的都通过 lua_gc
。C 语言构建系统时,一般不讲设计模式。但模式还是存在的。若要按《设计模式》中的分类,这应该归于 Facade 模式。代码在 lapi.c 的 895 行: