Files
endorphin-tabularium-docs/content/docs/smalltalk/07-processes.md
T

1.9 KiB
Raw Blame History

进程与同步:协作执行的对象

原书依据:第 13 章,印刷页 91–95,PDF 页 102–106。

原书的 Process 是 Smalltalk 镜像中的执行活动。不能把这个名字直接解释为操作系统进程,也不能据此推断多核并行。

四类对象的分工

类 作用
Process 表示可恢复、可挂起的执行活动
ProcessorScheduler 按调度策略管理执行活动
Delay 表示一定时间的等待
Semaphore 协调活动之间的等待与信号

块可以作为执行活动的计算内容。是否立即运行、以什么优先级运行,要看创建和启动协议;不要把“创建 Process”和“已经执行完成”混为一谈。

等待不是空转

Delay 表达经过一段时间后再继续。Semaphore 的 wait 与 signal 表达同步关系。等待活动暂停后,其他可运行活动可以继续推进;反复检查共享变量的循环则可能消耗执行时间。

消费者:等待信号 → 检查共享状态 → 取出结果
生产者:准备结果 → 更新共享状态 → 发出信号

这是一张概念顺序图,不是可直接运行的队列实现。仅有信号量不代表共享集合访问自动安全,还要定义互斥、空队列、重复信号和退出条件。

阅读调度代码的顺序

先找创建与启动位置,再找可能挂起的位置,最后沿恢复路径检查共享状态。重点记录“此处继续执行时,其他活动可能改过什么”。原书的优先级说明属于该系统调度模型,不是跨实现的性能保证。

思考题

如果发送信号后才写入结果,消费者恢复时能否看见完整状态?这取决于调度与同步保证;设计时应先完成状态转换,再通过约定的同步协议通知。研究时也要核对目标 VM 的具体行为。本教程未运行并发或调度测试。