CN115357361A - 一种任务处理方法、装置、设备及介质 - Google Patents

一种任务处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN115357361A
CN115357361A CN202211048336.6A CN202211048336A CN115357361A CN 115357361 A CN115357361 A CN 115357361A CN 202211048336 A CN202211048336 A CN 202211048336A CN 115357361 A CN115357361 A CN 115357361A
Authority
CN
China
Prior art keywords
task
thread
target
cell
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211048336.6A
Other languages
English (en)
Inventor
骆铭涛
张雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zitiao Network Technology Co Ltd
Original Assignee
Beijing Zitiao Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Zitiao Network Technology Co Ltd filed Critical Beijing Zitiao Network Technology Co Ltd
Priority to CN202211048336.6A priority Critical patent/CN115357361A/zh
Publication of CN115357361A publication Critical patent/CN115357361A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本申请公开了一种任务处理方法、装置、设备及介质,包括:当用户对目标表格执行触发操作时,第一线程可以获取相应的目标任务。当该目标任务为计算任务时,第一线程可以将计算任务发送给第二线程,以便第二线程处理该计算任务。当目标任务为页面渲染任务时,第一线程可以处理页面渲染任务,对目标表格进行页面渲染。也就是,当第一线程获取到计算任务时,即可以将计算任务发送给第二线程进行处理,避免第一线程由于处理计算任务而无法及时执行页面渲染任务的问题,可以解决当计算任务较多时引起的页面卡顿问题。

Description

一种任务处理方法、装置、设备及介质
技术领域
本申请涉及计算机技术领域,具体涉及一种任务处理方法、装置、设备及介质。
背景技术
浏览器在基于JavaScript脚本处理页面的任务时,可以利用主线程来处理用户事件以及页面绘制等任务。默认情况下,浏览器在主线程中运行一个页面中的所有JavaScript脚本,由于JavaScript语言的单线程特性,当浏览器运行一个较长时间的JavaScript脚本时,会阻塞主线程执行页面渲染任务,其中,页面渲染指生成帧并将生成的帧显示在屏幕上的动作。这样导致用户在操作页面时,浏览器无法及时响应用户的操作,页面绘制不及时以致于页面无法响应等问题,影响用户体验。
发明内容
有鉴于此,本申请实施例提供一种任务处理方法、装置、设备及介质,以实现不影响计算性能的情况下,解决页面渲染卡顿的问题。
为实现上述目的,本申请提供的技术方案如下:
在本申请第一方面,提供了一种任务处理方法,所述方法应用于第一线程,所述方法包括:
响应于用户针对目标表格的触发操作,获取目标任务;
当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
在本申请第二方面,提供了一种任务处理方法,所述方法应用于第二线程,所述方法包括:
接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
将所述计算结果发送给所述第一线程。
在本申请第三方面,提供了一种任务处理装置,所述装置应用于第一线程,所述装置包括:
获取单元,用于响应于用户针对目标表格的触发操作,获取目标任务;
第一发送单元,用于当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
第一处理单元,用于当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
在本申请第四方面,提供了一种任务处理装置,所述装置应用于第二线程,所述装置包括:
接收单元,用于接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
第二处理单元,用于基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
第二发送单元,用于将所述计算结果发送给所述第一线程。
在本申请第五方面,提供了一种电子设备,所述设备包括:存储器以及处理器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行第一方面或第二方面所述的方法。
在本申请第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在设备上运行时,使得所述设备执行第一方面或第二方面所述的方法。
在本申请第七方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现第一方面或第二方面所述的方法。
由此可见,本申请实施例具有如下有益效果:
本申请实施例中,当用户对目标表格执行触发操作时,第一线程可以获取相应的目标任务。当该目标任务为计算任务时,第一线程可以将计算任务发送给第二线程,以便第二线程处理该计算任务。当目标任务为页面渲染任务时,第一线程可以处理页面渲染任务,以实现目标表格的页面渲染。也就是,当第一线程获取到计算任务时,即可以将计算任务发送给第二线程进行处理,避免第一线程由于处理计算任务而无法及时执行页面渲染任务的问题,可以解决当计算任务较多时引起的页面卡顿问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种主线程处理任务的示意图;
图2为本申请实施例提供的一种任务处理方法的示意图;
图3为本申请实施例提供的一种任务处理方法的流程图;
图4为本申请实施例提供的另一种任务处理方法的流程图;
图5为本申请实施例提供的一种模块划分的示意图;
图6为本申请实施例提供的一种模块的交互示意图;
图7为本申请实施例提供的一种任务处理装置的示意图;
图8为本申请实施例提供的另一种任务处理装置的示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解本申请的技术方案,首先对本申请所涉及的技术背景进行介绍。
通常情况下,浏览器在主线程中会运行一个页面中的各个JavaScript脚本,由于JavaScript语言的单线程特性,当浏览器运行一个较长时间的JavaScript脚本时,会阻塞主线程执行页面渲染任务,这样导致用户在操作页面时,浏览器无法及时响应用户的操作,以致于出现页面卡顿无法响应等问题,影响用户体验。
以浏览器处理电子表格中的公式计算任务为例,随着电子表格中单元格的上限不断提升,以及电子表格在数据处理场景的广泛使用,包含大量复杂公式的表格使用的频率越来越高。目前的电子表格可以支持200万单元格,用户可以在单元格编写各种复杂的公式进行数据计算。当公式计算量达到一定的规模(例如10万)时,主线程处理计算任务可能花费大量的时间,导致用户在电子表格的界面执行操作时,主线程难以及时处理用户的操作并进行页面渲染,使电子表格的页面出现卡顿的现象。如图1所示,为一种主线程处理任务的示意图。当主线程接收任务进行处理时,如果主线程正在处理一个时间较长的计算任务,当接收到页面渲染的任务时,计算任务会阻塞主线程处理页面渲染任务,造成页面卡顿。
目前的一种解决方法是利用函数优化策略,例如,将具有相同计算任务的单元格添加相同的索引,通过调用索引触发执行一个计算任务以获得多个单元格的计算结果,减少相同公式的冗余计算。但是该方法仅能在一定程度上减少公式的计算量,当电子表格中的公式比较复杂时,仍会阻塞主线程,无法解决页面卡顿的问题。
针对主线程处理较复杂的公式需要花费较长时间的问题,目前还提供一种解决方法,即可以将较复杂的公式切分为多个计算量较小的子任务,当在执行多个子任务时,如果主线程获取到页面渲染任务,可以在处理完当前正在执行的子任务时,立即处理页面渲染任务,然后再执行剩余的计算子任务。这样虽然解决了页面卡顿的问题,但是处理计算任务的时间被大大拉长,影响主线程的计算性能。
基于此,本申请实施例提供一种任务处理方法,以实现在不影响计算性能的情况下,解决页面卡顿的问题。具体地,当用户对目标表格执行触发操作时,第一线程可以获取相应的目标任务,并判断该目标任务的类型。当该目标任务为计算任务时,第一线程可以将计算任务发送给第二线程,以便第二线程处理该计算任务。当目标任务为页面渲染任务时,第一线程可以处理页面渲染任务,以实现目标表格的页面渲染。也就是,当第一线程获取到计算任务时,即可以将计算任务发送给第二线程进行处理,避免第一线程由于处理计算任务而无法及时执行页面渲染任务的问题,可以解决当计算任务较多时引起的页面卡顿问题。
如图2所示,为本申请所提供的一种任务处理方法的示意图。当主线程在进行任务处理时,如果获取到计算任务,即可以将计算任务发送给Worker线程进行处理,并获取Worker线程返回的计算结果。当主线程获取到页面渲染任务时,可以及时处理页面渲染任务,解决因处理计算任务引起的页面卡顿问题。主线程和Worker线程并行执行任务,既不影响计算性能,也可以解决页面卡顿的问题。
下面将结合附图对本申请实施例提供的任务处理方法进行介绍。
参见图3,图3为本申请实施例提供的一种任务处理方法的流程图。
该方法可以应用于第一线程该方法可以包括以下步骤:
S301:响应于用户针对目标表格的触发操作,获取目标任务。
当用户触发针对目标表格的操作之后,第一线程即可以获取相应的目标任务,然后通过判断该目标任务的类型,确定是否由第一线程处理该目标任务。
在一些实施例中,上述所提到的用户针对目标表格的触发操作,需要保证目标表格处于打开状态,即显示目标表格中的内容。其中,目标表格中的内容可以包括各类数据以及公式引用关系等。在目标表格处于关闭状态时,用户可以通过双击、右键点击目标表格选择打开等操作,打开该目标表格。可选地,该目标表格的内容可以存储在服务端。也就是,当用户打开该目标表格时,第一线程可以从服务端获取该目标表格中的内容并进行加载,当所有内容加载完成后,可以通过页面渲染显示目标表格的内容。
在一些实施例中,根据目标表格中数据的加载顺序,可以将数据分为三类:元数据、分块数据和变更数据。其中,元数据包含表格元信息(如行列数,子表数),引用类数据(如在表格中插入的图片)和首屏数据等,首屏是访问页面时的第一个屏幕显示范围,首屏数据即初始加载显示范围内的数据。分块数据是指以指定行列数对目标表格进行切分存储时获得的数据。变更数据是指用户编辑后的数据。第一线程可以从服务端获取元数据、分块数据和变更数据之后,依次加载元数据、分块数据和变更数据,也可以先从服务端获取元数据后进行加载,然后再从服务端获取分块数据后进行加载,最后从服务端获取变更数据后进行加载,本实施例并不限定具体的加载方式。当加载完成所有的数据之后,第一线程对目标表格进行页面渲染,显示目标表格中的数据。
S302:当目标任务为计算任务时,将计算任务发送给第二线程,以便第二线程处理计算任务。
当第一线程获取到计算任务时,可以将该计算任务发送给第二线程进行处理,避免因处理计算任务导致第一线程无法及时处理页面渲染任务。也就是,第一线程获取的计算任务可以发送给第二线程进行处理,以便第一线程可以及时处理页面渲染任务。需要说明的是,第一线程和第二线程在处理不同的任务时,所对应的处理器可以为同一个处理器,也可以为不同的处理器。其中,第一线程可以为主线程,第二线程可以为Worker线程,即当主线程接收到计算任务时,可以将计算任务发送给Worker线程进行处理,以便主线程可以及时处理页面渲染任务。
在一些实施例中,当目标任务为计算任务时,第一线程获取计算任务的一种方式为,响应于用户针对目标表格中目标单元格的第一编辑操作,生成编辑操作指令。其中,该第一编辑操作为触发目标单元格所对应的计算任务的编辑操作,编辑操作指令中包括用户编辑目标单元格的编辑内容。第一线程基于编辑操作指令获取目标单元格对应的变更内容集合,即用户编辑的目标单元格的编辑内容。然后将该变更内容集合发送给第二线程,以便第二线程根据变更内容集合执行目标单元格所对应的计算任务。其中,目标单元格所对应的计算任务可以为在目标单元格中编辑的计算任务,也可以为在其他单元格所编辑的计算任务且需要调用目标单元格中的数据。
下面以一种应用场景为例进行介绍。当目标表格中A1单元格、A2单元格和A3单元格中具有相应的数据,A4单元格的内容为对A1单元格、A2单元格和A3单元格的数据进行求和。当用户修改A1单元格的数据时,A4单元格中的求和数据也发生改变,那么第一线程所获取的变更内容集合为A1单元格的数据内容和A4单元格中进行求和的数据,与A1单元格所关联的计算任务为A4单元格中对A1单元格、A2单元格和A3单元格的数据进行求和的计算任务。当用户修改A4单元格的内容为对A1单元格和A2单元格的数据进行求和时,那么变更内容集合为A1单元格和A2单元格的数据进行相加,A4单元格所对应的计算任务即为对A1单元格和A2单元格的数据进行求和。当用户修改A4单元格的内容为对A1单元格、A2单元格和A3单元格的数据进行求积时,那么变更内容集合即为A1单元格的数据、A2单元格的数据和A3单元格的数据进行相乘。也就是,变更内容集合中可以包括变更的数据和变更的公式引用关系等。
当第一线程获取变更内容集合之后,可以将该变更内容集合发送给服务端,以便服务端根据变更内容集合更新目标表格的内容,这样当用户保存并关闭目标表格后,再打开目标表格时可以从服务端获取更新的目标表格的内容。以上述应用场景为例,当用户更改A1单元格的数据之后,A4单元格的数据也发生改变,所以服务端需要更改A1单元格和A4单元格的数据。
在一些实施例中,第一线程还可以根据变更内容集合更新第一数据模块,其中,第一数据模块用于第一线程存储目标表格的内容,包括目标表格中的数据以及公式引用关系等。当用户对单元格的数据进行编辑操作且不触发计算任务时,第一线程可以从第一数据模块中获取单元格所对应的数据。
在上述实施例中介绍了当用户的第一编辑操触发目标单元格对应的计算任务时,第一线程可以获取计算任务。可选地,本实施例还提供一种第一线程获取计算任务的方式,下面将进行具体介绍。
在一些实施例中,当用户针对目标表格未触发编辑操作时,第一线程可以根据JavaScript脚本获取目标表格中的计算任务,并发送给第二线程进行处理。当目标表格的内容较多,无法在当前显示窗口进行全部显示时,响应于用户滚动浏览目标表格的操作,可以获取当前显示窗口所显示的目标表格中的至少一个第一单元格,即当前显示窗口可以显示的单元格。然后从至少一个单元格中确定具有计算任务的第二单元格,并获取第二单元格所对应的计算任务。也就是,当用户滚动浏览目标表格时,可以优先获取显示窗口范围内单元格的计算任务,将该计算任务发送给第二线程进行优先处理。例如,当第二线程还有未处理的计算任务时,可以提高第二单元格所对应的计算任务的优先级,将第二单元格所对应的计算任务插入在其他未处理的计算任务之前进行处理。
在一些实施例中,当第二线程处理完成计算任务后,可以将该计算任务所对应的计算结果返回给第一线程,也就是,第一线程可以接收第二线程处理计算任务的计算结果。当接收到计算结果后,第一线程可以对目标表格进行页面渲染,以显示新的计算结果。
S303:当目标任务为页面渲染任务时,处理页面渲染任务对目标表格进行页面渲染。
当第一线程所获取的目标任务为页面渲染任务时,第一线程可以处理该页面渲染任务,对目标表格进行页面显示。具体地,响应于用户针对目标表格的第二编辑操作,生成页面渲染任务,其中,第二编辑操作为不触发计算任务的编辑操作。例如,第二编辑操作可以包括:高亮显示目标表格中的单元格、修改目标表格中单元格的内容且不触发单元格所对应的计算任务、滚动浏览目标表格且不触发计算任务以及放大/缩小显示目标表格等。当用户对目标表格中的单元格进行高亮操作时,第一线程可以根据用户的操作,对目标表格进行页面渲染,使第三单元格进行高亮显示。
通过本申请实施例所提供的任务处理方法,当第一线程获取到计算任务时,可以将计算任务发送给第二线程进行处理,以便第一线程在获取到页面渲染任务时,可以及时处理页面渲染任务,解决因计算任务阻塞主线程而引起的页面卡顿问题。
在上述实施例中主要介绍了第一线程发送计算任务以及处理页面渲染任务的过程,下面将详细介绍第二线程处理计算任务的过程。
参见图4,图4为本申请实施例提供的另一种任务处理方法的流程图。
该方法可以应用于第二线程,第二该方法可以包括以下步骤:
S401:接收第一线程发送的计算任务;
其中,该计算任务中包括目标表格的内容。
当用户对目标表格执行触发操作后,第一线程可以获取到目标任务,当目标任务为计算任务时,第一线程可以将计算任务发送给第二线程。具体地,响应于用户针对目标表格中目标单元格的第一编辑操作,接收第一线程发送的目标单元格的变更内容集合。其中,第一编辑操作为触发目标单元格对应的计算任务的操作,该变更内容集合为第一线程根据第一编辑操作生成的,具体的实现方式可参见上述实施例,在此不再赘述。当第一线程接收变更内容集合后,可以将包括变更内容集合的目标单元格所对应的计算任务存储在任务队列中。其中,该任务队列可以遵循先进先出的处理原则,即最早存储在任务队列中的任务最先被处理。也就是,第二线程可以将待处理的计算任务存储在任务队列中,根据先进先出的处理原则,依次调用任务队列中的计算任务进行处理。
在一些实施例中,当第二线程获取变更内容集合后,可以根据变更内容集合更新第二数据模块,该第二数据模块用于第二线程存储目标表格的内容,包括目标表格的数据以及公式引用关系等,以保证与第一数据模块中内容的一致性。在实际应用中,为了保证第一线程中第一数据模块与第二线程中第二数据模块内容的一致性,第一线程可以通过postMessage函数与第二线程实现通信,当第一线程中第一数据模块的内容发生变更时,可以通过postMessage函数将变更内容发送给第二线程,使第二线程可以及时更改第二数据模块中的内容,保持与第一数据模块的一致性。
在一些实施例中,当用户未触发针对目标表格的编辑操作时,第一线程可以根据JavaScript脚本获取目标表格中的计算任务,并发送给第二线程进行处理。当目标表格的内容较多,无法在当前显示窗口进行全部显示时,响应于用户滚动浏览目标表格的操作,第一线程可以获取当前显示窗口所显示的目标表格中的至少一个第一单元格,然后从至少一个单元格中确定具有计算任务的第二单元格,并获取第二单元格所对应的计算任务,并将第二单元格所对应的计算任务发送给第二线程。也就是,当用户滚动浏览目标表格时,第一线程可以优先获取显示窗口范围内单元格的计算任务,并将该计算任务发送给第二线程,以使得第二线程可以优先处理该计算任务。例如,当第二线程的任务队列中包括未处理的计算任务时,可以将第二单元格对应的计算任务插入到任务队列的最前面位置,以便第二线程处理完当前正在处理的计算任务时,可以优先处理第二单元格对应的计算任务。
S402:基于目标表格的内容,调用目标函数处理计算任务,获得计算结果。
当第二线程接收计算任务后,可以根据目标表格中的内容,调用相应的函数来处理计算任务,下面将分别针对上述两种接收计算任务的方式进行介绍。
在一些实施例中,当用户编辑目标单元格并触发计算任务时,第二线程可以接收目标单元格对应的变更内容集合。当该变更内容集合中包括目标单元格的公式引用关系时,也就是,用户编辑修改了目标单元格中原始的公式引用关系,此时第二线程可以根据变更内容集合中目标单元格对应的数据和公式引用关系,调用第一计算函数,基于第一计算函数处理目标单元格对应的计算任务,获得计算结果。其中,第一计算函数可以为一个或多个计算函数。当变更内容集合中不包括目标单元格的公式引用关系时,第二线程可以从第二数据模块中获取目标单元格对应的公式引用关系,然后基于变更内容集合和公式引用关系,调用第二计算函数处理计算任务获得计算结果。
此外,第二线程还可以将计算结果存储在第二数据模块中,后续再次处理该计算任务时,如果该计算任务所对应的数据和公式引用关系没有发生变化,第二线程可以从第二数据模块中调用该计算结果,无需再次调用计算函数进行计算。基于此,当第二线程在处理目标单元格对应的计算任务之前,可以将目标单元格中原始内容所对应的计算结果进行失效处理,防止第二线程误调用第二数据模块中的原始计算结果。
在一些实施例中,当用户滚动浏览目标表格时,第二线程可以接收第一线程发送的针对第二单元格对应的计算任务,并将该计算任务插入到任务队列的最前面位置,进行优先处理。在处理该计算任务时,可以获取第二单元格对应的公式引用关系,并基于第二单元格的数据和公式引用关系,调用第三计算函数处理计算任务,获得计算结果。
S403:将计算结果发送给第一线程。
第二线程处理计算任务获取计算结果后,可以将计算结果发送给第一线程。当第一线程接收计算结果后,可以通过页面渲染显示该计算结果。
通过第二线程处理第一线程的计算任务,可以使第一线程及时处理页面渲染任务,解决页面卡顿的问题。根据上述实施例可知,该第一线程可以为主线程,第二线程可以为Worker线程。
在一些实施例中,为了方便主线程和Worker线程之间的通信,加快任务处理的速度,可以根据第一线程的功能将第一线程划分为不同的模块,同样也可以根据第二线程的功能将第二线程划分为不同的模块,可以由相应的模块处理各自的功能,提高任务处理的速度。
参见图5,为本申请实施例提供的一种模块划分的示意图。可选地,可以将第一线程51划分为第一核心模块53和第一协同模块54,其中,第一核心模块53可以包括命令模块501、第一应用模块502、第一计算模块503以及第一数据模块504等,第一协同模块54可以包括第一同步模块505。可以将第二线程52划分为第二核心模块55和第二协同模块56,其中,第二核心模块55可以包括第二应用模块506、第二数据模块507以及第二计算模块508等,第二协同模块56可以包括第二同步模块509。
其中,命令模块501可以根据用户的第一编辑操作生成变更内容集合,然后将变更内容集合发送给第一应用模块502,第一应用模块502可以应用变更内容集合以更新第一数据模块504中的内容。第一应用模块502还可以将变更内容集合发送给第一同步模块505,以便第一同步模块505可以将变更内容集合发送给服务端,服务端可以根据变更内容集合更新目标表格中的内容。第一同步模块505还可以将变更内容集合发送给第二线程52的第二同步模块509,当第二同步模块509接收到变更内容集合后,可以将变更内容集合发送给第二应用模块506,第二应用模块506可以根据变更内容集合更新第二数据模块507中的内容,从而可以保持第一数据模块504和第二数据模块509内容的一致性。可选地,为了确保主线程和Worker线程在处理计算任务时数据的一致性,可以设置第一应用模块502和第二应用模块506的数据层代码相同,保证相同的数据经过处理后,数据层的数据变更也相同,从而可以保证第一数据模块504和第二数据模块507中的数据也相同。此外,第一线程51中的第一计算模块503可以接收计算任务,但是并不执行计算任务,第一计算模块503可以把计算任务发送给第二计算模块508,由第二计算模块508处理计算任务。
下面将结合一种具体应用场景,介绍第一线程和第二线程的模块在处理任务时的工作原理。参见图6,图6为申请实施例提供的一种模块的交互示意图。
响应于用户编辑单元格的操作,浏览器可以监听用户事件,此时浏览器可以向编辑器派发用户的编辑事件,编辑器生成编辑单元格指令。第一线程中的命令模块接收到编辑单元格指令后,可以解析该指令,并根据该指令生成目标单元格的变更内容集合。命令模块可以将变更内容集合发送给第一应用模块,以便第一应用模块应用该变更内容集合,更新第一数据模块中的数据。此外,第一应用模块可以将变更内容集合发送给第一同步模块,使第一同步模块可以将变更内容集合发送给第二线程的第二同步模块,第二同步模块接收变更内容集合后,将变更数据内容集合发送给第二应用模块,使第二应用模块应用变更数据集合以更新第二数据模块中的内容。例如,当变更内容集合中包括目标单元格变更的数据和变更的公式引用关系时,第二应用模块需要更新第二数据模块中目标单元格对应的数据和公式引用关系。然后根据目标单元格对应的数据和公式引用关系,调用相关的计算函数处理计算任务。获得计算结果后,可以将计算结果存储在第二数据模块,并将计算结果发送给第一数据模块进行存储。当第一线程的第一数据模块接收到计算结果后,可以由第一线程的渲染模块获取计算结果,进行页面渲染,以便在目标表格中显示新的计算结果。
响应于用户滚动浏览目标表格的操作,渲染模块可以获取当前显示窗口内的至少一个第一单元格,并将上述至少一个第一单元格发送给第一计算模块,此时第一计算模块可以从至少一个第一单元格中获取具有计算任务的第二单元格,并将第二单元格对应的计算任务发送给第二计算模块进行处理。同理,可以由第一线程的渲染模块获取第一数据模块中的计算结果,实现在目标表格中显示新的计算结果。
当第一线程获取计算任务后,可以发送给第二线程处理计算任务,以使第一线程可以及时处理页面渲染任务,解决页面卡顿的问题。
基于上述方法实施例,本申请实施例还提供一种任务处理装置。参见图7,图7为本申请实施例提供的一种任务处理装置的示意图。
该装置700应用于第一线程,该装置700包括:获取单元701、第一发送单元702以及第一处理单元703;
获取单元701,用于响应于用户针对目标表格的触发操作,获取目标任务;
第一发送单元702,用于当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
第一处理单元703,用于当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
在一种可能的实现方式中,当所述目标任务为计算任务时,所述获取单元701,具体用于响应于所述用户针对所述目标表格中目标单元格的第一编辑操作,生成编辑操作指令,所述第一编辑操作为触发所述目标单元格对应的计算任务的编辑操作,所述编辑操作指令中包括所述目标单元格的编辑内容;基于所述编辑操作指令,获取所述目标单元格对应的变更内容集合;
所述第一发送单元702,具体用于将所述变更内容集合发送给所述第二线程,以便所述第二线程根据所述变更内容集合执行所述目标单元格所对应的计算任务。
在一种可能的实现方式中,当所述目标任务为页面渲染任务时,所述获取单元701,具体用于响应于所述用户针对所述目标表格的第二编辑操作,生成所述页面渲染任务,所述第二编辑操作为不触发计算任务的编辑操作。
在一种可能的实现方式中,当所述目标任务为计算任务时,,所述获取单元701,具体用于响应于所述用户滚动浏览所述目标表格的操作,获取当前显示窗口所显示的所述目标表格中的至少一个第一单元格;从所述至少一个第一单元格中确定第二单元格,所述第二单元格为具有计算任务的单元格;获取所述第二单元格所对应的计算任务。
在一种可能的实现方式中,在获取所述目标单元格对应的变更内容集合之后,所述方法还包括以下一项或多项:
基于所述变更内容集合更新第一数据模块,所述第一数据模块用于所述第一线程存储所述目标表格的内容;
将所述变更内容集合发送给服务端,以便所述服务端根据所述变更内容集合更新所述目标表格中的内容。
在一种可能的实现方式中,所述用户针对所述目标表格的第二编辑操作包括:高亮显示所述目标表格中的单元格、修改所述目标表格中单元格的内容且不触发所述单元格所对应的计算任务、滚动浏览所述目标表格且不触发计算任务以及放大/缩小显示所述目标表格的至少一种。
在一种可能的实现方式中,所述方法还包括:
接收所述第二线程处理所述计算任务后返回的计算结果;
对所述目标表格进行页面渲染以显示所述计算结果。
在一种可能的实现方式中,所述第一线程包括:主线程;所述第二线程包括:工作者Worker线程。
此外,本申请实施例还提供一种任务处理装置。参见图8,图8为本申请实施例提供的另一种任务处理装置的示意图。
该装置800应用于第二线程,该装置800包括:接收单元801、第二处理单元802以及第二发送单元803;
接收单元801,用于接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
第二处理单元802,用于基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
第二发送单元803,用于将所述计算结果发送给所述第一线程。
在一种可能的实现方式中,所述接收单元801,具体用于接收所述第一线程发送的所述目标单元格对应的变更内容集合,所述第一编辑操作为触发所述目标单元格所对应的计算任务的编辑操作,所述变更内容集合为所述第一线程根据所述第一编辑操作生成的;将包括所述变更内容集合的所述目标单元格所对应的计算任务存储在任务队列中;
所述第二处理单元802,具体用于当所述变更内容集合中包括所述目标单元格对应的公式引用关系时,基于所述变更内容集合调用第一计算函数处理所述计算任务;或者,当所述变更内容集合中不包括所述目标单元格对应的公式引用关系时,获取所述目标单元格对应的公式引用关系,基于所述变更内容集合和所述公式引用关系,调用第二计算函数处理所述计算任务。
在一种可能的实现方式中,所述接收单元801,具体用于接收所述第一线程发送的第二单元格对应的计算任务,所述第二单元格为至少一个第一单元格中具有计算任务的单元格,所述至少一个第一单元格为当前显示窗口所显示的所述目标表格中的单元格;将所述第二单元格对应的计算任务插入到所述任务队列的最前面位置;
所述第二处理单元802,具体用于获取所述第二单元格对应的公式引用关系,基于所述第二单元格对应的数据和公式引用关系,调用第三计算函数处理所述计算任务。
在一种可能的实现方式中,在接收所述第一线程发送的所述目标单元格的变更内容集合之后,所述方法还包括:
根据所述变更内容集合更新第二数据模块,所述第二数据模块用于所述第二线程存储所述目标表格的内容,所述第二数据模块的内容与第一数据模块的内容具有一致性。
在一种可能的实现方式中,在获取所述目标表格的公式引用关系之前,所述方法还包括:
对所述目标单元格中原始内容所对应的计算结果进行失效处理,所述原始内容所对应的计算结果存储在第二数据模块。
在一种可能的实现方式中,在获得计算结果之后,所述方法还包括:
将所述计算结果存储在第二数据模块。
本申请实施例提供的任务处理装置所具有的有益效果可参见上述方法实施例,在此不再赘述。
需要说明的是,本实施例中各个单元的具体实现可以参见上述方法实施例中的相关描述。本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。例如,上述实施例中,处理单元和发送单元可以是同一个单元,也可以是不同的单元。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
参见图9,其示出了适于用来实现本公开实施例的电子设备900的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其中,处理装置901可以用于第一线程和第二线程处理相应的任务,其可以根据存储在只读存储器(ROM)902中的程序或者从存储装置908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
本公开实施例提供的电子设备与上述实施例提供的方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
本公开实施例提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所提供的方法。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(Hyper Text TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备可以执行上述方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本申请的一个或多个实施例,提供了一种任务处理方法,该方法应用于第一线程,该方法可以包括:
响应于用户针对目标表格的触发操作,获取目标任务;
当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
根据本申请的一个或多个实施例,当所述目标任务为计算任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户针对所述目标表格中目标单元格的第一编辑操作,生成编辑操作指令,所述第一编辑操作为触发所述目标单元格对应的计算任务的编辑操作,所述编辑操作指令中包括所述目标单元格的编辑内容;
基于所述编辑操作指令,获取所述目标单元格对应的变更内容集合;
所述将所述计算任务发送给所述第二线程,以便所述第二线程处理所述计算任务,包括:
将所述变更内容集合发送给所述第二线程,以便所述第二线程根据所述变更内容集合执行所述目标单元格所对应的计算任务。
根据本申请的一个或多个实施例,当所述目标任务为页面渲染任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户针对所述目标表格的第二编辑操作,生成所述页面渲染任务,所述第二编辑操作为不触发计算任务的编辑操作。
根据本申请的一个或多个实施例,当所述目标任务为计算任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户滚动浏览所述目标表格的操作,获取当前显示窗口所显示的所述目标表格中的至少一个第一单元格;
从所述至少一个第一单元格中确定第二单元格,所述第二单元格为具有计算任务的单元格;
获取所述第二单元格所对应的计算任务。
根据本申请的一个或多个实施例,在获取所述目标单元格对应的变更内容集合之后,所述方法还包括以下一项或多项:
基于所述变更内容集合更新第一数据模块,所述第一数据模块用于所述第一线程存储所述目标表格的内容;
将所述变更内容集合发送给服务端,以便所述服务端根据所述变更内容集合更新所述目标表格中的内容。
根据本申请的一个或多个实施例,所述用户针对所述目标表格的第二编辑操作包括:高亮显示所述目标表格中的单元格、修改所述目标表格中单元格的内容且不触发所述单元格所对应的计算任务、滚动浏览所述目标表格且不触发计算任务以及放大/缩小显示所述目标表格的至少一种。
根据本申请的一个或多个实施例,所述方法还包括:
接收所述第二线程处理所述计算任务后返回的计算结果;
对所述目标表格进行页面渲染以显示所述计算结果。
根据本申请的一个或多个实施例,所述第一线程包括:主线程;所述第二线程包括:工作者Worker线程。
根据本申请的一个或多个实施例,提供了一种任务处理方法,该方法应用于第二线程,该方法可以包括:
接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
将所述计算结果发送给所述第一线程。
根据本申请的一个或多个实施例,接收第一线程发送的计算任务,包括:
接收所述第一线程发送的所述目标单元格对应的变更内容集合,所述第一编辑操作为触发所述目标单元格所对应的计算任务的编辑操作,所述变更内容集合为所述第一线程根据所述第一编辑操作生成的;
将包括所述变更内容集合的所述目标单元格所对应的计算任务存储在任务队列中;
所述基于所述目标表格的内容,调用目标函数处理所述计算任务,包括:
当所述变更内容集合中包括所述目标单元格对应的公式引用关系时,基于所述变更内容集合调用第一计算函数处理所述计算任务;或者,
当所述变更内容集合中不包括所述目标单元格对应的公式引用关系时,获取所述目标单元格对应的公式引用关系,基于所述变更内容集合和所述公式引用关系,调用第二计算函数处理所述计算任务。
根据本申请的一个或多个实施例,接收第一线程发送的计算任务,包括:
接收所述第一线程发送的第二单元格对应的计算任务,所述第二单元格为至少一个第一单元格中具有计算任务的单元格,所述至少一个第一单元格为当前显示窗口所显示的所述目标表格中的单元格;
将所述第二单元格对应的计算任务插入到所述任务队列的最前面位置;
所述基于所述目标表格的内容,调用目标函数处理所述计算任务,包括:
获取所述第二单元格对应的公式引用关系,基于所述第二单元格对应的数据和公式引用关系,调用第三计算函数处理所述计算任务。
根据本申请的一个或多个实施例,在接收所述第一线程发送的所述目标单元格的变更内容集合之后,所述方法还包括:
根据所述变更内容集合更新第二数据模块,所述第二数据模块用于所述第二线程存储所述目标表格的内容,所述第二数据模块的内容与第一数据模块的内容具有一致性。
根据本申请的一个或多个实施例,在获取所述目标表格的公式引用关系之前,所述方法还包括:
对所述目标单元格中原始内容所对应的计算结果进行失效处理,所述原始内容所对应的计算结果存储在第二数据模块。
根据本申请的一个或多个实施例,在获得计算结果之后,所述方法还包括:
将所述计算结果存储在第二数据模块。
根据本申请的一个或多个实施例,提供了一种任务处理装置,该装置应用于第一线程,该装置可以包括:
获取单元,用于响应于用户针对目标表格的触发操作,获取目标任务;
第一发送单元,用于当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
第一处理单元,用于当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
在本申请的一个或多个实施例中,当所述目标任务为计算任务时,所述获取单元,具体用于响应于所述用户针对所述目标表格中目标单元格的第一编辑操作,生成编辑操作指令,所述第一编辑操作为触发所述目标单元格对应的计算任务的编辑操作,所述编辑操作指令中包括所述目标单元格的编辑内容;基于所述编辑操作指令,获取所述目标单元格对应的变更内容集合;
所述第一发送单元,具体用于将所述变更内容集合发送给所述第二线程,以便所述第二线程根据所述变更内容集合执行所述目标单元格所对应的计算任务。
在本申请的一个或多个实施例中,当所述目标任务为页面渲染任务时,所述获取单元,具体用于响应于所述用户针对所述目标表格的第二编辑操作,生成所述页面渲染任务,所述第二编辑操作为不触发计算任务的编辑操作。
在本申请的一个或多个实施例中,当所述目标任务为计算任务时,,所述获取单元,具体用于响应于所述用户滚动浏览所述目标表格的操作,获取当前显示窗口所显示的所述目标表格中的至少一个第一单元格;从所述至少一个第一单元格中确定第二单元格,所述第二单元格为具有计算任务的单元格;获取所述第二单元格所对应的计算任务。
在本申请的一个或多个实施例中,在获取所述目标单元格对应的变更内容集合之后,所述方法还包括以下一项或多项:
基于所述变更内容集合更新第一数据模块,所述第一数据模块用于所述第一线程存储所述目标表格的内容;
将所述变更内容集合发送给服务端,以便所述服务端根据所述变更内容集合更新所述目标表格中的内容。
在本申请的一个或多个实施例中,所述用户针对所述目标表格的第二编辑操作包括:高亮显示所述目标表格中的单元格、修改所述目标表格中单元格的内容且不触发所述单元格所对应的计算任务、滚动浏览所述目标表格且不触发计算任务以及放大/缩小显示所述目标表格的至少一种。
在本申请的一个或多个实施例中,所述方法还包括:
接收所述第二线程处理所述计算任务后返回的计算结果;
对所述目标表格进行页面渲染以显示所述计算结果。
在本申请的一个或多个实施例中,所述第一线程包括:主线程;所述第二线程包括:工作者Worker线程。
根据本申请的一个或多个实施例,提供了一种任务处理装置,该装置应用于第二线程,该装置可以包括:
接收单元,用于接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
第二处理单元,用于基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
第二发送单元,用于将所述计算结果发送给所述第一线程。
在本申请的一个或多个实施例中,所述接收单元,具体用于接收所述第一线程发送的所述目标单元格对应的变更内容集合,所述第一编辑操作为触发所述目标单元格所对应的计算任务的编辑操作,所述变更内容集合为所述第一线程根据所述第一编辑操作生成的;将包括所述变更内容集合的所述目标单元格所对应的计算任务存储在任务队列中;
所述第二处理单元,具体用于当所述变更内容集合中包括所述目标单元格对应的公式引用关系时,基于所述变更内容集合调用第一计算函数处理所述计算任务;或者,当所述变更内容集合中不包括所述目标单元格对应的公式引用关系时,获取所述目标单元格对应的公式引用关系,基于所述变更内容集合和所述公式引用关系,调用第二计算函数处理所述计算任务。
在本申请的一个或多个实施例中,所述接收单元,具体用于接收所述第一线程发送的第二单元格对应的计算任务,所述第二单元格为至少一个第一单元格中具有计算任务的单元格,所述至少一个第一单元格为当前显示窗口所显示的所述目标表格中的单元格;将所述第二单元格对应的计算任务插入到所述任务队列的最前面位置;
所述第二处理单元,具体用于获取所述第二单元格对应的公式引用关系,基于所述第二单元格对应的数据和公式引用关系,调用第三计算函数处理所述计算任务。
在本申请的一个或多个实施例中,在接收所述第一线程发送的所述目标单元格的变更内容集合之后,所述方法还包括:
根据所述变更内容集合更新第二数据模块,所述第二数据模块用于所述第二线程存储所述目标表格的内容,所述第二数据模块的内容与第一数据模块的内容具有一致性。
在本申请的一个或多个实施例中,在获取所述目标表格的公式引用关系之前,所述方法还包括:
对所述目标单元格中原始内容所对应的计算结果进行失效处理,所述原始内容所对应的计算结果存储在第二数据模块。
在本申请的一个或多个实施例中,在获得计算结果之后,所述方法还包括:
将所述计算结果存储在第二数据模块。
根据本申请的一个或多个实施例,提供了一种电子设备,所述设备包括:存储器以及处理器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行所述的任务处理方法。
根据本申请的一个或多个实施例,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在设备上运行时,使得所述设备执行所述的任务处理方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (18)

1.一种任务处理方法,其特征在于,所述方法应用于第一线程,所述方法包括:
响应于用户针对目标表格的触发操作,获取目标任务;
当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
2.根据权利要求1所述的方法,其特征在于,当所述目标任务为计算任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户针对所述目标表格中目标单元格的第一编辑操作,生成编辑操作指令,所述第一编辑操作为触发所述目标单元格对应的计算任务的编辑操作,所述编辑操作指令中包括所述目标单元格的编辑内容;
基于所述编辑操作指令,获取所述目标单元格对应的变更内容集合;
所述将所述计算任务发送给所述第二线程,以便所述第二线程处理所述计算任务,包括:
将所述变更内容集合发送给所述第二线程,以便所述第二线程根据所述变更内容集合执行所述目标单元格所对应的计算任务。
3.根据权利要求1所述的方法,其特征在于,当所述目标任务为页面渲染任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户针对所述目标表格的第二编辑操作,生成所述页面渲染任务,所述第二编辑操作为不触发计算任务的编辑操作。
4.根据权利要求1所述的方法,其特征在于,当所述目标任务为计算任务时,所述响应于用户针对目标表格的触发操作,获取目标任务,包括:
响应于所述用户滚动浏览所述目标表格的操作,获取当前显示窗口所显示的所述目标表格中的至少一个第一单元格;
从所述至少一个第一单元格中确定第二单元格,所述第二单元格为具有计算任务的单元格;
获取所述第二单元格所对应的计算任务。
5.根据权利要求2所述的方法,其特征在于,在获取所述目标单元格对应的变更内容集合之后,所述方法还包括以下一项或多项:
基于所述变更内容集合更新第一数据模块,所述第一数据模块用于所述第一线程存储所述目标表格的内容;
将所述变更内容集合发送给服务端,以便所述服务端根据所述变更内容集合更新所述目标表格中的内容。
6.根据权利要求3所述的方法,其特征在于,所述用户针对所述目标表格的第二编辑操作包括:高亮显示所述目标表格中的单元格、修改所述目标表格中单元格的内容且不触发所述单元格所对应的计算任务、滚动浏览所述目标表格且不触发计算任务以及放大/缩小显示所述目标表格的至少一种。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述第二线程处理所述计算任务后返回的计算结果;
对所述目标表格进行页面渲染以显示所述计算结果。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述第一线程包括:主线程;所述第二线程包括:工作者Worker线程。
9.一种任务处理方法,其特征在于,所述方法应用于第二线程,所述方法包括:
接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
将所述计算结果发送给所述第一线程。
10.根据权利要求9所述的方法,其特征在于,接收第一线程发送的计算任务,包括:
接收所述第一线程发送的所述目标单元格对应的变更内容集合,所述第一编辑操作为触发所述目标单元格所对应的计算任务的编辑操作,所述变更内容集合为所述第一线程根据所述第一编辑操作生成的;
将包括所述变更内容集合的所述目标单元格所对应的计算任务存储在任务队列中;
所述基于所述目标表格的内容,调用目标函数处理所述计算任务,包括:
当所述变更内容集合中包括所述目标单元格对应的公式引用关系时,基于所述变更内容集合调用第一计算函数处理所述计算任务;或者,
当所述变更内容集合中不包括所述目标单元格对应的公式引用关系时,获取所述目标单元格对应的公式引用关系,基于所述变更内容集合和所述公式引用关系,调用第二计算函数处理所述计算任务。
11.根据权利要求9所述的方法,其特征在于,接收第一线程发送的计算任务,包括:
接收所述第一线程发送的第二单元格对应的计算任务,所述第二单元格为至少一个第一单元格中具有计算任务的单元格,所述至少一个第一单元格为当前显示窗口所显示的所述目标表格中的单元格;
将所述第二单元格对应的计算任务插入到所述任务队列的最前面位置;
所述基于所述目标表格的内容,调用目标函数处理所述计算任务,包括:
获取所述第二单元格对应的公式引用关系,基于所述第二单元格对应的数据和公式引用关系,调用第三计算函数处理所述计算任务。
12.根据权利要求10所述的方法,其特征在于,在接收所述第一线程发送的所述目标单元格的变更内容集合之后,所述方法还包括:
根据所述变更内容集合更新第二数据模块,所述第二数据模块用于所述第二线程存储所述目标表格的内容,所述第二数据模块的内容与第一数据模块的内容具有一致性。
13.根据权利要求10所述的方法,其特征在于,在获取所述目标表格的公式引用关系之前,所述方法还包括:
对所述目标单元格中原始内容所对应的计算结果进行失效处理,所述原始内容所对应的计算结果存储在第二数据模块。
14.根据权利要求9所述的方法,其特征在于,在获得计算结果之后,所述方法还包括:
将所述计算结果存储在第二数据模块。
15.一种任务处理装置,其特征在于,所述装置应用于第一线程,所述装置包括:
获取单元,用于响应于用户针对目标表格的触发操作,获取目标任务;
第一发送单元,用于当所述目标任务为计算任务时,将所述计算任务发送给第二线程,以便所述第二线程处理所述计算任务;
第一处理单元,用于当所述目标任务为页面渲染任务时,处理所述页面渲染任务对所述目标表格进行页面渲染。
16.一种任务处理装置,其特征在于,所述装置应用于第二线程,所述装置包括:
接收单元,用于接收第一线程发送的计算任务,所述计算任务中包括所述目标表格的内容;
第二处理单元,用于基于所述目标表格的内容,调用目标函数处理所述计算任务,获得计算结果;
第二发送单元,用于将所述计算结果发送给所述第一线程。
17.一种电子设备,其特征在于,所述设备包括:存储器以及处理器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行权利要求1-8或9-14任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在设备上运行时,使得所述设备执行权利要求1-8或9-14任一项所述的方法。
CN202211048336.6A 2022-08-30 2022-08-30 一种任务处理方法、装置、设备及介质 Pending CN115357361A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211048336.6A CN115357361A (zh) 2022-08-30 2022-08-30 一种任务处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211048336.6A CN115357361A (zh) 2022-08-30 2022-08-30 一种任务处理方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115357361A true CN115357361A (zh) 2022-11-18

Family

ID=84003714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211048336.6A Pending CN115357361A (zh) 2022-08-30 2022-08-30 一种任务处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115357361A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112950A (zh) * 2023-10-19 2023-11-24 腾讯科技(深圳)有限公司 电子地图中对象的渲染方法、装置、终端及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112950A (zh) * 2023-10-19 2023-11-24 腾讯科技(深圳)有限公司 电子地图中对象的渲染方法、装置、终端及存储介质
CN117112950B (zh) * 2023-10-19 2024-02-02 腾讯科技(深圳)有限公司 电子地图中对象的渲染方法、装置、终端及存储介质

Similar Documents

Publication Publication Date Title
JP2024521149A (ja) 情報表示方法、装置および電子機器
CN111488185B (zh) 页面数据处理方法、装置、电子设备和可读介质
CN110633434B (zh) 一种页面缓存方法、装置、电子设备及存储介质
CN111400625B (zh) 页面处理方法、装置、电子设备及计算机可读存储介质
CA3168780A1 (en) Method and apparatus for browsing table in document, and electronic device and storage medium
US20240126417A1 (en) Method, form data processing method, apparatus, and electronic device for form generation
CN112287206A (zh) 信息处理方法、装置和电子设备
CN113934958A (zh) 页面加载方法、装置、电子设备和计算机可读介质
CN111596991A (zh) 交互操作执行方法、装置和电子设备
CN111723309B (zh) 用于网页搜索的方法和装置
CN110633433B (zh) 一种页面缓存方法、装置、电子设备及存储介质
CN115935925A (zh) 表格适配方法、电子设备及计算机可读存储介质
CN115357361A (zh) 一种任务处理方法、装置、设备及介质
CN111353296B (zh) 文章处理方法、装置、电子设备及计算机可读存储介质
CN112380819A (zh) 文档编辑方法、装置和电子设备
CN110717126A (zh) 页面浏览方法、装置、电子设备及计算机可读存储介质
CN115113787B (zh) 一种消息处理方法、装置、设备及介质
WO2022095932A1 (zh) 直播间页面跳转方法、返回方法、装置及电子设备
CN113163483B (zh) 时间戳更新方法、装置和电子设备
CN114095670A (zh) 一种视频个人作品切换的方法、装置、设备及介质
CN111259291B (zh) 视图展示方法、装置和电子设备
CN111708597B (zh) 信息处理方法、装置和电子设备
CN115016878A (zh) 信息处理方法、装置和电子设备
CN113760281A (zh) 一种过渡动画的实现方法、装置、终端设备及存储介质
CN112989773A (zh) 用于同步更新数据的方法、装置、设备和计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination