actionscript函数中的线程是什么?

inv*_*ear 2 apache-flex multithreading actionscript-3

我见过很多其他开发人员在ActionScript函数中引用线程.作为一个新手,我不知道他们指的是什么:

在这个意义上什么是线程?
我如何一次运行多个线程?
我如何确保我一次只运行一个线程?

谢谢〜迈克

Joh*_*lla 6

线程表示让程序看起来同时执行多个作业的方法.虽然作业是否可以实际同时发生取决于几个因素(最重要的是,程序运行的CPU是否有多个核可用于完成工作).线程很有用,因为它们允许在一个上下文中完成工作而不会干扰另一个上下文.

一个例子将有助于说明为什么这很重要.假设您有一个程序来获取电话簿中名称与某个字符串匹配的每个人的列表.当人们点击"搜索"按钮时,它将触发昂贵且耗时的搜索,这可能无法完成几秒钟.

  • 如果您只有单线程执行模型,则UI将挂起并且在搜索完成之前无响应.您的程序别无选择,只能等待结果完成.

  • 但是如果你有多个线程,你可以将搜索操作卸载到另一个线程,然后进行回调 - 一个在工作完成时调用的触发器 - 让你知道事情已经准备就绪.这释放了UI并允许它继续响应事件.

不幸的是,由于ActionScript的执行模型本身不支持线程,因此无法获得真正的线程.有一个粗略的近似称为"绿色线程",它们是由执行上下文或虚拟机而不是更大的操作系统控制的线程,这通常是这样做的.虽然我不能说他们的使用范围有多广泛,但有几个人已经尝试过这种做法.你可以阅读更多的作者:Alex Harui的博客在这里,看到绿色的主题为ActionScript的例子在这里.