可以在AS3中同时访问类中的两个函数吗?

时间:2010-06-07 20:19:38

标签: flash actionscript-3

在自定义队列中,有一个push()和一个pop()函数。可以在Event.COMPLETE上随时调用pop(),这是否意味着代码可以同时在push()和pop()中运行?如果是这样,有没有办法阻止代码同时在两个函数中运行?

3 个答案:

答案 0 :(得分:1)

不,Flash是单线程的,因此不可能同时进行两次操作。

基本上,在处理事件时,您不必担心其他代码尚未完成执行。

答案 1 :(得分:1)

你应该通过senocular阅读这篇文章(具体见事件和框架执行)Order of operations

虽然flash可能会给多线程带来一些非同步操作的印象,但它只是一个单线程程序,所以你永远不必担心锁定。基本上事件操作是在“两个”帧之间运行,因此运行“在”帧上运行的代码在事件运行之前/之后完成,因此不必担心功能重叠。

答案 2 :(得分:0)

您需要在“上下文切换”的上下文中讨论“原子操作”的概念,以及互斥锁的概念。

基本上,互斥锁是一个由线程设置或清除的布尔值。

每个帖子都会:

function pop(){    Get_Mutex();    do_the_pop_operation();    Free_Mutex(); }

function push(){    Get_Mutex();    do_the_push_operation();    Free_Mutex(); }

Get_Mutex()函数将一直处于休眠状态,直到收到互斥锁为止,因此一次只能进行一次操作。