首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionscript 3 (as3)并发模型

Actionscript 3 (as3)并发模型
EN

Stack Overflow用户
提问于 2011-02-13 09:09:08
回答 2查看 1.4K关注 0票数 4

我有一些关于竞争条件的证据:参见下面某个对象调用了某个对象的Actionscript 3 (as3)程序中的更新:

  1. 当它处理异步下载事件时
  2. 从添加到电影时间轴上的帧的脚本中

AS3中的并发模型是什么?事件处理是否序列化(即,尽管存在任何底层多线程,每个处理程序都会对一个又一个事件运行到完成)?框架中的脚本是否与该事件流串行化?我怀疑最后一个问题的答案是否定的。

我正在采取步骤系统地记录是否/何时发生竞争条件,但是最好知道AS3提供了什么保证(如果有的话)。

更新:我在事件处理程序中做了一个简单的检查,以记录事件处理程序是否已经在特定感兴趣的对象上被处理,我发现这确实发生了,即竞争条件是可能的。有没有其他人遇到过这种情况,你对此做了什么?!

EN

回答 2

Stack Overflow用户

发布于 2011-02-13 11:55:02

在Flash中没有真正的并发性。 -所有的事情,包括事件的处理,都是由主时间线计时的。您的所有操作都肯定会按照代码中指定的确切顺序执行。

但是当然,如果将一个“异步启动”的结果(我将使用这个术语,尽管严格意义上它并不完全正确)的结果基于另一个操作的结果--这是使用事件处理程序时的情况,那么可能会出现问题。您必须自己找到一些方法来自己编程解决这些问题;在ActionScript中没有任何内置的结构,比如同步或原子结构,没有线程和锁定,或者任何其他类似的机制。

有一些方法可以模拟Flash中的多线程,本教程可能是开始搜索解决方案的有趣方法,因为它解释了一些基本概念。

票数 0
EN

Stack Overflow用户

发布于 2011-04-14 14:16:12

只有一个线程可以运行您的AS3代码。

在异步事件的处理程序中,竞争条件是可能的,但与多线程应用程序中的情况不同,而且通常更容易跟踪。

例如,您可以启动动画播放并同时加载文件。首先完成的是完全依赖于系统的。

另一个例子不是真正的争用条件,而是一个类似的症状,您可以在其中使用for..in (或for..each)循环为同一个事件添加多个侦听器。侦听器将按照添加的顺序接收事件,但for..in循环是随机的,因此您将看到随机结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4983353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档