引用:http://diomas.ru/2009/11/05/process/#cut1
分布式计算任务的时候,我发现当我写任何基于html模板生成器。XML文件与我做生意,是巨大的和每个递归树就必然导致超限制起飞消息执行脚本。幸运的是,我当时看到有人flaser。我决定要在ru迭代每个树节点的后续调用帧。我要在一帧,然后调用多个迭代,通过改造工作,还有后来setInterval通过Timer。无论如何,我还是копипаст代码变更和小幸福。但当时已经10次应该做例行可怕解析器我做出一切必要的决定,个人仍然用于这样的任务。
我写的类调用需要承担方法在迭代周期,需要休息下,UI应用程序可以继续与用户互动。按说我应该叫这类的线程(ender - lib),但当时我并没有想过自己,称他是Process,为什么不呢?。他:
我想要解决这个всякихProcessManager一年级,没有单独的类接口和其他垃圾多。整个总体处于静态方法的泛函最Process。我现在需要做一些解析器是отнаследова并实现的两种方法:Process(iteration)和吸附特性为progress。
()方法完成全部工作详细过程,整个工程所需的上下文属性类等等。除了有效工作,躺在这个方法,他需要返回Boolean值,表明迭代数据是否最新。
性能量显示progress已完成工作总量相比,可以容纳值到1.0 0.0。如果迭代次数一般是未知的值可以保持0.0返回1.0,当过程结束。另外在使用флексов框架意义之前把该属性标记[Bindable元(event = " processProgress”)]
对于示例代码就是对过程质量'омquicksort排序:
这里我们用递归栈:那里折叠坐标下подмассив开始和结束都要处理。()方法把比较详细的当前值并在支点上,所以比较所有的排列。同时,所有数据必须存储在属性里面迭代类:日常подмассив边界(partLeftInd和partRightInd)、位置(控制点)和pivotInd点(cursorInd比较)。
使用这种过程非常简单:
- public function doQuicksort( array:Array ):void
- {
- Process.blocklen = 20;
- Process.pauselen = 10;
- var process:QuicksortProcess = new QuicksortProcess( array );
- process.addEventListener( Process.COMPLETE, handleComplete );
- process.addEventListener( Process.PROGRESS, handleProgress );
- // пускай о прогрессе сообщается каждые 10%
- process.updateStep = 0.1;
- process.activate();
- }
- private function handleProgress( event:Event ):void
- {
- var process:QuicksortProcess =
- event.target as QuicksortProcess;
- trace( int( process.progress * 100 ) + "%" );
- }
- private function handleComplete( event:Event ):void
- {
- var process:QuicksortProcess =
- event.target as QuicksortProcess;
- trace(
- "сравнений: " + process.comparsions +
- ", макс. глубина рекурсии: " + process.maxDepth
- );
- }