当前位置: 首页 > 专利查询>微软公司专利>正文

用于电子表格链式计算的多线程处理的方法和系统技术方案

技术编号:2854501 阅读:428 留言:0更新日期:2012-04-11 18:40
本发明专利技术的诸实施例涉及在电子表格程序中使用多个处理器进行链式计算的并行处理方法,其中每个处理器都具有单独的重算引擎。诸操作基本上包括首先确定多个可用处理器,然后将一个重算引擎分配给每个可用处理器,在重算引擎之间分发公式,然后,在电子表格程序中调用重算操作时,并行地对被分配给每个重算引擎的公式求值。

【技术实现步骤摘要】

本专利技术涉及电子表格计算处理,尤其涉及运行在多处理器环境中的电子表格程序的链式计算。
技术介绍
传统的电子表格程序如Microsoft Excel利用单个计算链处理电子表格中公式的计算和重算,该计算链在本质上是被输入到Excel当前载入的所有工作表中的全部公式的有序列表。此外,有涉及这一计算链的每个变量的单个副本。在公式被输入到电子表格时,该公式被添加到全局计算链的开始。当通过修改公式所依赖的单元的内容或手动请求重算操作触发重算(recalc)操作时,Excel将会循环访问计算链中,并重新计算已经被标记为“脏”(即,等待重算)的任何公式。因此,单个控制线程反复访问公式的单个链。计算链和保留其排序的信息一起被保存到文件中。然后,在重新载入电子表格和计算链之后,为处理公式,诸公式根据其依存关系以合适的顺序排列。这就防止了Excel必须重复对计算链进行排序的工作。下列方案例示传统的电子表格程序链式计算例程如何处理公式之间的依存关系。考虑在图15中示出的电子表格10。电子表格10的计算链12可以表示为图16。在这一传统的电子表格链12中,代码总是对最左边的第一个单元求值。在上面的情况中本文档来自技高网...

【技术保护点】
一种处理电子表格程序中的支持和依赖公式的方法,包括:确定多个可用处理器;如果可用处理器的数目至少是两个,则给每个可用处理器分配一重算引擎;在所述重算引擎之间分发公式;以及对分配给每个重算引擎的公式求值。

【技术特征摘要】
US 2004-9-27 10/951,5761.一种处理电子表格程序中的支持和依赖公式的方法,包括确定多个可用处理器;如果可用处理器的数目至少是两个,则给每个可用处理器分配一重算引擎;在所述重算引擎之间分发公式;以及对分配给每个重算引擎的公式求值。2.如权利要求1所述的方法,其特征在于,所述处理是由一操作系统执行的。3.如权利要求1所述的方法,其特征在于,所述确定操作包括在程序启动之后向计算机操作系统查询多个处理器是否是可用。4.如权利要求1所述的方法,其特征在于,所述分发操作包括选择第一公式;随机地将所述第一公式分配给所述重算引擎中随机的一个;为每个下一公式重复所述选择和分配操作,直到所有公式都被分配给所述重算引擎之一。5.如权利要求1所述的方法,其特征在于,所述对每个重算引擎的求值操作包括选择第一公式;确定所述第一公式是依赖公式还是支持公式;如果所述第一公式是支持公式,则对所述公式求值;如果所述第一公式是依赖公式,则确定该依赖公式的支持公式是否在所述重算引擎中;以及如果该依赖公式的所述支持公式是在所述重算引擎中,则将所述支持公式置于所述第一公式之前。6.如权利要求5所述的方法,其特征在于,还包括确定被置于所述第一公式之前的该支持公式是否为依赖公式;如果该支持公式不是依赖公式,则对该支持公式求值;以及如果该支持公式是依赖公式,则确定该依赖公式的另一支持公式是否在所述重算引擎中,以及,如果是在所述重算引擎中,则将所述另一支持公式置于所述支持公式之前,并对所述另一支持公式求值。7.如权利要求5所述的方法,其特征在于,所述求值操作还包括如果所述第一公式是依赖公式,而且该依赖公式的支持公式不在所述重算引擎中,则确定所述支持公式的重算引擎位置,并将所述第一公式移到所述重算引擎。8.如权利要求5所述的方法,其特征在于,所述求值操作还包括如果所述第一公式是依赖公式,并且该依赖公式的支持公式不在所述重算引擎中,则确定所述支持公式的重算引擎位置,并查询有所述支持公式的重算引擎是否完成计算,以及,如果已经完成,则再次尝试对所述依赖公式求值,如果没有完成,则将所述依赖公式移到有所述支持公式的重算引擎中。9.如权利要求8所述的方法,其特征在于,被移到有所述支持公式的重算引擎的所述依赖公式被置于所述重算引擎的附加链上。10.一种计算机系统可读的计算机程序产品,其有形地包含可由计算机系统执行以实现权利要求1所述的方法的指令程序。11.一种计算机系统可读的计算机程序产品,其有形地包含可由计算机系统执行以实现权利要求5所述的方法的指令程序。12.一种处理具有两个处理器的操作计算系统上的电子表格程序中的多个公式的方法,所述方法包括将第一重算引擎分配给所述两个处理器之一,并将第二重算引擎分配给所述两个处理器中的另一个;将每个公式分发给所述第一和第二重算引擎之一;在所述第一和第二重算引擎的每一个中确定第一/下一公式是否为依赖公式;如果所述第一/下一公式不是依赖公式,则对所述第一/下一公式求值;如果所述第一/下一公式是依赖公式,则确定支持公式的位置;如果所述支持公式是在同一重算引擎中,则将所述支持公式移到所述第一/下一公式之前;以及对所述支持公式求值。13.如权利要求12所述的处理方法,其特征在于,还包括为所述重算引擎中的下一公式重复所述确定和求值操作。14.如权利要求12所述的处理方法,其特征在于,还包括确定所述支持公式是否...

【专利技术属性】
技术研发人员:BC琼斯CB罗斯切勒DF加纳D坎浦贝尔JJ杜扎克MJ安德罗司基
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1