Apache flex 为什么';t Flex支持线程?

Apache flex 为什么';t Flex支持线程?,apache-flex,multithreading,actionscript,Apache Flex,Multithreading,Actionscript,为什么Flex/ActionScript目前不支持线程化?只是不支持,ActionScript中没有内置的线程化方法。你可以检查模拟伪线程。这是一个没有答案的问题,不是吗 Flash播放器支持线程;但是,该功能不向创建应用程序的开发人员公开 线程可能很复杂,并且很容易被误用,从而产生性能问题,这是由于创建太多线程而导致的。Adobe传统上决定不给开发人员足够的绳子,让他们在暴露的API方面束手无策 [尽管许多开发人员找到了不用线程就可以上吊的方法]为什么?因为并发是危险的。线是一种必要的邪恶。它

为什么Flex/ActionScript目前不支持线程化?

只是不支持,ActionScript中没有内置的线程化方法。你可以检查模拟伪线程。

这是一个没有答案的问题,不是吗

Flash播放器支持线程;但是,该功能不向创建应用程序的开发人员公开

线程可能很复杂,并且很容易被误用,从而产生性能问题,这是由于创建太多线程而导致的。Adobe传统上决定不给开发人员足够的绳子,让他们在暴露的API方面束手无策


[尽管许多开发人员找到了不用线程就可以上吊的方法]

为什么?因为并发是危险的。线是一种必要的邪恶。它们经常被滥用和过度使用。它不是优化算法,而是并行化,尽管并行化版本实际上需要的资源是单线程的10倍,而单线程需要的资源又是优化版本的10倍

FlashPlayer是为一组特定的任务而设计的,为Flash平台创建内容非常简单,这是一个很好的决定,SWF不会完全耗尽您所有的核心

最后,这是一个政治决定,我对此相当满意。FlashPlayer有一个非常简单的执行和渲染模型,不能遇到死锁或竞争条件,只能阻塞一个内核。这就像一个决定,任何通话都必须在60秒后结束。我见过很多人问为什么。嗯,因为像我这样的人不喜欢GUI冻结超过一分钟的想法

格里茨

back2dos和Flex基于Actionscript,它不支持线程。Adobe对此的官方推理是,线程可能会在不同的用户机器上导致非常不同的行为,而线程中的竞争条件可能会导致在像flash player这样性能已经很高的平台上出现性能问题

在未来的Flash版本中,有人谈论支持类似HTML5的工作组池,但这还不是官方消息

有关如何在Actionscript中伪造线程的信息,请查看Huen Tue Dao关于greenthreads的演示:


另一种选择是将数值密集型计算发送给Pixel Bender。Pixel Bender是一个flash服务,它在自己的线程上运行,提供更好的性能。有关实现此技术的更多信息,请查看:

以保持较低的入门门槛,因为对于初学者程序员来说,线程往往导致更多的头痛而不是有用的问题。Flash经常被那些只想获得魔兽世界的人所使用,因此adobe可能会做出政治决定,尽量减少他们必须提供的支持

理想情况下,它们基本上支持异步函数(我在阅读Io语言时发现了这一点)。正如RJ Owen提到的,像WebWorkers这样的东西在后台线程中运行,而不阻塞ui线程将是理想的


但实际上,在较低的级别上,这对Adobe来说可能很难做到,因为执行模型与图形功能紧密耦合。从对体系结构的基本理解来看,flash player vm只读取在单线程模式下运行的预编译字节码,因此adobe必须彻底改变某些东西才能使其工作。

因为正如苹果公司认为他们的平台不支持flash一样,Adobe认为他们的平台不支持有用的编程范例?;)但是可怕的电信供应商对苹果公司还行吗?@jer:是的,因为整个世界都围绕着苹果公司转。顺便说一句:我不知道你的情况,但我更喜欢GC而不是线程;)adamcodes:在产品战略会议上,他们将选择范围缩小到“可怕的电信提供商”、“非可怕的电信提供商”和“基于魔法精灵灰尘的转发器”。最后,他们选择了#1,因为其他两个都不是真的。@back2dos,我是在开玩笑。我在某个地方读到,如果flex支持线程,那么它将大大增加flash播放器的大小。所以减少flash播放器的大小,他们忽略了线程功能。这是真的吗?Flex是一个包含用户界面框架和编译器的SDK。它创建将在播放器中运行的SWF文件。FlexSDK中添加的任何内容都不会增加Flash播放器的大小;就像在播放列表中添加更多歌曲一样,不会增加媒体播放器的大小。Flash Player中暴露的线程支持会增加其大小吗?线程支持会增加sWF大小吗?我不知道。我认为swf是由flash player运行的,所以如果swf具有多线程功能,那么为了支持它,flash player必须包含更多的代码(以提供运行时线程功能)。这就好比如果mediaplayer想要支持更多的编解码器/格式,那么他们必须添加更多的代码,这最终会增加mediaplayer的大小。