2.15 广播消息

发送消息允许执行任何代码段。如果有多个接收者,显然它们都会同时启动。但实际上,控制在不同进程之间快速切换。

2.15.1 同时接收者

在这里,我们看到消息1的广播已经结束,而两个接收者块仍然处于活动状态。

图1-Scratch教程:技术

2.15.2 广播等待

广播和等待块等待直到最后一条消息完成。在这里,我们看到第一个堆栈已经完成,而第二个堆栈仍在运行。

图2-Scratch教程:技术

2.15.3 多线程

当两个堆栈同时执行时,它是如何工作的?让我们尝试理解发生了什么。我们将创建一个msg列表,在执行时每个进程将创建一个条目。两个进程(1和2)将同时运行并执行1000次循环。

这些条目是:

进程号(1或2)和在开始时重置的计时器。

图3-Scratch教程:技术

结果是,在每个1000个迭代中,这两个进程交替进行。每个进程在每个迭代中轮流执行。

图4-Scratch教程:技术

2.15.4 线程内等待

当我们在其中一个进程中引入额外的等待时间会发生什么?假设我们在进程1中引入了1毫秒的等待时间。进程2会得到更多的运行时间吗?

图5-Scratch教程:技术

结果是很奇特的。进程1和2仍然交替执行,但是现在进程2在进程1的等待时间内有第二次运行的机会。总体结果是,进程2的运行频率是进程1的两倍。

等待块有1毫秒的等待时间,但实际上它与33毫秒的内部屏幕刷新计时器相一致。

图6-Scratch教程:技术

这两个进程交替执行,直到索引1500,在此时进程2完成了1000次迭代并终止。

进程1大约每33毫秒进行一次,以执行1000次迭代。总时间为33秒。

2.15.5 执行顺序

这些进程按照它们创建的顺序执行。这个顺序不能改变。复制和粘贴一个进程将在最后一个位置创建一个新进程。

图7-Scratch教程:技术

每个进程将其进程号添加到变量seq中。我们看到:

进程1和2位于同一个角色中

进程3位于不同的角色中 进

程4位于舞台

标签: Scratch, Scratch编程, Scratch中国, 少儿编程, Scratch社区, Scratch编程社区, Scratch编程课程, Scratch编程教程