加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我是否需要担心Flex / AIR代码中的并发问题?

发布时间:2020-12-15 01:48:41 所属栏目:百科 来源:网络整理
导读:我有一种情况,我正在启动一些对象,当它们准备好处理一些输入数据时,调用一个处理程序. 该处理程序从待处理请求的ArrayCollection中获取数据集,将其分配给对象,并从ArrayCollection中删除数据集. (我不能从ArrayCollection中弹出,因为我需要搜索它以找到一个
我有一种情况,我正在启动一些对象,当它们准备好处理一些输入数据时,调用一个处理程序.

该处理程序从待处理请求的ArrayCollection中获取数据集,将其分配给对象,并从ArrayCollection中删除数据集.

(我不能从ArrayCollection中弹出,因为我需要搜索它以找到一个合适的数据集 – 它并不总是最顶层的.)

两个对象是否有可能以这样的方式调用我的处理程序:(1)第一个被分配数据集,(2)第二个被分配相同的数据集,然后服务于第一个的处理程序的实例删除了它,我猜(3)尝试从ArrayCollection中删除数据集时处理程序错误的第二个实例.

我对Flash Player运行时不熟悉,知道这种故障情况是否可行,或者我是否应该花些额外的时间来实现某种锁定以防止它出现.

编辑:到目前为止,答案为Flex提供了热烈的评论,但我不确定他们是否回答了这个问题.要清楚,我不是要决定是否使用Flex.

如果我有一个方法:

>从ArrayCollection中的某处获取一段数据
>对该数据做些什么
>从ArrayCollection中删除该数据

在第一次调用#1之后但是在#3之前,是否可能另一次调用同一方法#1?

le dorfier,你说Flex / AS“正常” – 你能说明它在这种情况下会“正常工作”吗?

解决方法

您不需要进行锁定,但可能需要跟踪对州的修改顺序.正在播放的不同异步调用可以按照与发出异步调用时不同的顺序返回和修改模型状态.

Flex和AIR应用程序具有单线程编程模型.但是,它们的体系结构依赖于异步I / O来与服务器层进行交互.

现在,在Java Swing应用程序或.NET Winforms应用程序中,可以在后台线程上进行i / o交互,并在主GUI线程中编组参数/结果. (这些图形UI库不允许其他线程更改图形工具包对象/窗口小部件的状态,因此必须将数据交互与其他后台处理线程进行封送处理.)

相反,Flex和AIR的i / o类库是在这些类异步实现i / o操作的地方编写的.例如,要执行HTTP GET,可以调用HttpSerivce send()方法,这不是阻塞调用.相反,只要调用最终完成并返回,就可以提供ActionScript3闭包来处理结果.

与此同时,Flex / AIR应用程序可以允许GUI继续与用户完全交互.它甚至可以显示进度指示器和/或取消按钮.

事实证明,尽管Flex / AIR单线程GUI模型比多线程Java Swing或.NET Winform应用程序更简单,更易于编程,但它具有与那些丰富的样式相同的复杂UI行为.客户应用.

简单的事件驱动的单线程GUI,异步i / o(通过服务调用和/或消息传递),以及用于处理结果或故障的ActionScript3闭包,是Flex / AIR世界统治的秘密配方. (当然,作为这个世界征服战略的一部分,我应该提到对属性,事件和良好的声明性 – 或命令式 – 数据绑定的良好支持.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读