actionscript 中的多线程还是绿色线程?

Posted

技术标签:

【中文标题】actionscript 中的多线程还是绿色线程?【英文标题】:Multithreading or green threading in actionscript? 【发布时间】:2010-09-09 08:56:31 【问题描述】:

我想知道是否有任何关于如何在 ActionScript 中实现多线程或“绿色线程”的代码或类库。

您可能已经看到,Scott Peterson 正在开发某种工具集,但除了他在 Adob​​e MAX Chicago 活动中的表现之外,我没有找到任何其他信息。

问候尼古拉斯

【问题讨论】:

【参考方案1】:

这是来自 Drew Cummins 的绿色线程库:

http://blog.generalrelativity.org/?p=29

【讨论】:

【参考方案2】:

在 ActionScript 中没有内置的方式来执行绿色线程。你必须编写代码来处理它。

创建一个函数,对您想要执行的任何操作执行一次迭代。它应该返回 true 或 false 取决于它的工作是否完成。现在,您必须计算 ENTER_FRAME 事件下一次屏幕更新的时间间隔。这可以使用 flash.utils.getTimer 来完成。

start = getTimer();
//thread is a ui component added to system manager that is redrawn each frame
var fr:Number = Math.floor(1000 / thread.systemManager.stage.frameRate);
due = start + fr;

继续执行你的函数,同时每次检查函数的返回值,并通过比较 getTimer() 和到期时间来检查是否超过了到期时间。

这已由 Alex Harui 在博客条目 - Threads in ActionScript 中实现为一个可用的类

【讨论】:

【参考方案3】:

It's an old article,但quasimondo 启动多个 swfs 然后通过 LocalConnection 共享数据的方法也可能很有趣。他们说使用 LocalConnection 的来回可能会消耗几个周期,但如果正在处理的迭代足够复杂,那应该不是太大的问题。

【讨论】:

【参考方案4】:

我是图形专家,而不是程序员,所以我不确定这会对您有所帮助。但是!

我将所有的 GUI 制作成多帧“电影”,并将每个 gui 线程写在不同的帧上。确保您只有 1-3 个线程,并将 FPS 设置为 30 或 60。

这对于小型项目很有用,因为它的 bug 抗性和实施已为您完成。

【讨论】:

以上是关于actionscript 中的多线程还是绿色线程?的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter GUI 中的多线程,不同类中的线程

Java高级-解析Java中的多线程机制

JavaEE开发之Spring中的多线程编程以及任务定时器详解

JAVA-初步认识-第十二章-JVM中的多线程分析

Actionscript 3中的伪线程(对于Flash)

解析Thread和Object类中的多线程难点