CN114595011A - 一种基于Web Worker的前端多进程计算方法和系统 - Google Patents
一种基于Web Worker的前端多进程计算方法和系统 Download PDFInfo
- Publication number
- CN114595011A CN114595011A CN202210248436.7A CN202210248436A CN114595011A CN 114595011 A CN114595011 A CN 114595011A CN 202210248436 A CN202210248436 A CN 202210248436A CN 114595011 A CN114595011 A CN 114595011A
- Authority
- CN
- China
- Prior art keywords
- thread
- worker
- callback
- parameters
- background
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于Web Worker的前端多进程计算方法和系统,方法包括:判断当前线程是否开启,若当前线程开启则在开启过程中向后台线程传入参数创建Worker线程;计算当前已开启线程数据,并对每一已开启线程进行赋名,用于在后台多个线程中查找对应关系;获取现线程执行内容的上下文以及出入参数,设置成功回调和错误回调;查找所述赋名的线程,并将所述赋名的线程和对应的上下文、出入参数、成功回调、错误回调绑定;根据后台多线程执行结果调用对应的数据成功回调或错误回调到主线程。所述方法和系统利用浏览器的多线程可以解决javascript单线程执行大数据计算中主线程等待和页面假死现象,从而可以无需阻断主线程。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种基于Web Worker的前端多进程计算方法和系统
背景技术
目前现有技术前端由于运行机制特殊性,需要处理实际dom,所以根据应用场景在创建js预言时就由先天条件决定了它为单线程语言,也导致了需要用到前端大数据量运算的场景性能出现瓶颈。为了解决这一问题,我们可以使用浏览器的多线程机制与通信来有效的解决前端单线程计算会导致页面假死或卡顿的现象。Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法。并且单独开启的线程会独立执行任务并且不干扰主线程并且可以与主线程通信。可以利用Web Worker提供的后台线程执行能力来把前端运算挪移到后台线程中,在线程执行完毕后通知主线程进行更新,完成不阻断主线程运算的目的。
上述现有技术存在如下技术问题:无论通过算法优化或者数据优化,始终都会进到javascript执行主线程当中,导致其余程序无法执行。就算是使用异步方案,但在异步的执行中依旧会碰到执行耗时过长导致卡顿的问题,因为始终在主线程执行时其他程序需要等待。
发明内容
本发明其中一个发明目的在于提供一种基于Web Worker的前端多进程计算方法和系统,所述方法和系统可以实现前端耗时较长的大数据计算,又可以在执行过程中避免阻断主线程和其余线程的缺陷。
本发明另一个发明目的在于提供一种基于Web Worker的前端多进程计算方法和系统,所述方法和系统利用浏览器的多进程来实现前端的性能提升,并且做到了多进程之间的管理以及交互,提高了前端在浏览器中的运行体验。
本发明另一个发明目的在于提供一种基于Web Worker的前端多进程计算方法和系统,所述方法和系统利用浏览器的多线程可以解决javascript单线程执行大数据计算中主线程等待和页面假死现象,从而可以无需阻断主线程。
为了实现至少一个上述发明目的,本发明进一步提供一种基于Web Worker的前端多进程计算方法,所述方法包括:
利用浏览器判断当前线程是否开启,若当前线程开启则在开启过程中向后台线程传入参数创建Worker线程;
计算当前已开启线程数据,并对每一已开启线程进行赋名,用于在后台多个线程中查找对应关系;
获取现线程执行内容的上下文以及出入参数,设置成功回调和错误回调;
查找所述赋名的线程,并将所述赋名的线程和对应的上下文、出入参数、成功回调、错误回调绑定;
根据后台多线程执行结果调用对应的数据成功回调或错误回调到主线程。
根据本发明其中一个较佳实施例,所述向后台线程传入参数的方法包括:通过创建的worker线程在work对象上挂载postMessage方法,通过postMessage方法将参数从主线程传入到worker线程中,用于创建所述worker线程,其中所述参数为worker线程和主线程的约定参数。
根据本发明另一个较佳实施例,当主线程向所述worker线程传入参数时,通过后台进程绑定self.onmessage方法获取主线程传递的参数,其中当postmessage被触发后,onmessage获取对应的postmessage消息。
根据本发明另一个较佳实施例,当后台进程获取到对应的参数后,进一步根据所述参数执行进程,其中所述参数为约定参数。
根据本发明另一个较佳实施例,当所述后台进程执行完毕后,采用self.postMessage对获取参数执行进程的结果以参数的形式传递给对应创建的线程。
根据本发明另一个较佳实施例,采用Worker.onmessage获取进程执行结果的关键词信息,并根据所述关键词信息判断获取的信息是否正确,若正确则直接将绑定的成功回调返回给主线程。
根据本发明另一个较佳实施例,若后台进程中存在执行错误信息,则根据所述关键词信息判断获取的信息是否正确,若存在错误,则通过Worker.onerror获取错误信息后将绑定的错误回调返回给主线程。
根据本发明另一个较佳实施例,主进程在获取成功回调和错误回调后,关闭后台进程。
为了实现至少一个上述发明目的,本发明进一步提供一种基于Web Worker的前端多进程计算系统,所述系统执行上述一种基于Web Worker的前端多进程计算方法。
本发明进一步提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行所述一种基于Web Worker的前端多进程计算方法。
附图说明
图1显示的是本发明一种基于Web Worker的前端多进程计算方法流程示意图。
具体实施方式
以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。
可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
请结合图1,本发明公开了一种基于Web Worker的前端多进程计算方法和系统,其中所述方法主要包括如下步骤:初始化Worker线程,其中所述Worker线程可以在主线程的js代码中实现初始化过程,提供初始化文件,并对所述Worker线程初始化的入口路径。在完成所述worker线程的初始化后,进一步判断所述worker线程是否开启,其中判断所述worker线程是否开启的方法包括但不仅限于:设置threading库中的event对象,在线程初始状态下,所述event对象的信号标志设置为假,此时该线程将被一直阻塞到信号标志为真。当所述event对象的信号标志设置为真,则将会唤醒等待设置的event对象的线程,从而可以判断该线程是否开启。
当判断线程被开启后,进一步调用new Worker()去创建线程,在完成多个线程的创建后,进一步收集每一个已开启线程的数据,对于每个已开启的线程数据为主线程和worker线程约定的入参。
在完成所述worker线程的开启后,需要对每个已开启线程进行赋名,其中对所述已开启线程进行赋名的方法包括但不仅限于:通过prctl()系统调用的方式实现对每一个线程的命名,其中所述prctl()方法包括:通过调用prctl()方法设置线程命名参数option,所述线程命名参数option可以利用PR_SET_NAME指令来设置当前线程的名称,并利用PR_GET_NAME指令来获取线程名称,其中PR_SET_NAME设置后的arg存放将要设置线程名的指针,并通过PR_GET_NAME提供一个已经分配空间的字符指针。因此通过所述prctl()方法可以对每个已经开启的线程分配具有唯一性的字符串来作为对应的线程名。此线程名可以在众多的worker中找到对应的worker线程。
进一步的,在完成已经开启线程的赋名后,获取对应的后台worker线程中获取对应的出参和入参,以及上下文数据;其中若所述上下文数据以及出入参数在后台线程编码最终固定,则不需要从worker线程中获取。进一步设置成功回调方法和错误回调方法。将所述成功回调方法、错误回调方法、上下文数据、出入参数分别和对应的线程绑定。
在完成多个线程创建后,生成基于浏览器的多线程实例。所述后台线程的参数传输方法包括:根据浏览器建立的多线程的work实例,在创建的work实例得到的work对象上挂载postMessage方法,通过所述postMessage方法可以将对应的参数从主线程传递给后台的worker线程。其中传递的所述参数为任意值,只要后台worker线程和主线程约定即可。
后台进程通过绑定self.onmessage方法,根据主线程传递的参数不同而获取不同参数,举例来说,从主线程传递的参数为e,通过所述self.onmessage方法可以获取所述参数e的data、origin、source等属性。也就是说,后台的work进程在postmessage触发后,通过onmessage收到来自postmessage发送的不同类型的消息。当后台进程获取到对应的参数后,可以根据所述获取的参数执行对应的进程。需要说明的是,所述进程可以为人为约定的进程,比如设置自定义的执行方法和返回参数。
当后台进程执行结束后,可以进一步根据self.postMessage对所述进程执行的结果以参数的形式返回给work实例,并且由work实例中的Worker.onmessage获取正确的信息,其中所述正确信息判断包括:获取work进程中的关键词信息,其中所述关键词信息包括但不仅限于uuid、id等,并根据所述关键词信息判断获取的信息是否正确,若正确则直接将绑定的成功回调返回给主线程。通过所述work实例中的Worker.onerror获取线程中的错误信息,其中所述线程中的错误信息获取方法包括:当worker线程js执行线程报错时,会自动触发error事件,所述error事件将会传递给创建的work实例。
当根据进程执行结果将成功回调或错误回调返回给主线程后,所述主线程将将自动关闭所述进程。
上述技术方案可以实现如下技术效果:利用浏览器的多进程来实现前端的性能提升,并且做到了多进程之间的管理以及交互,提高了前端在浏览器中的运行体验,浏览器的多线程可以通过对后台进程的管理以及在后台运行,从而有效的避免单线程执行卡死现象,基于此实现不阻断主进程的方案。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。
Claims (10)
1.一种基于Web Worker的前端多进程计算方法,其特征在于,所述方法包括:
利用浏览器判断当前线程是否开启,若当前线程开启则在开启过程中向后台线程传入参数创建worker线程;
计算当前已开启线程数据,并对每一已开启线程进行赋名,用于在后台多个线程中查找对应关系;
获取现线程执行内容的上下文以及出入参数,设置成功回调和错误回调;
查找所述赋名的线程,并将所述赋名的线程和对应的上下文、出入参数、成功回调、错误回调绑定;
根据后台多线程执行结果调用对应的数据成功回调或错误回调到主线程。
2.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,所述向后台线程传入参数的方法包括:通过创建的worker线程在work对象上挂载postMessage方法,通过postMessage方法将参数从主线程传入到worker线程中,用于创建所述worker线程,其中所述参数为worker线程和主线程的约定参数。
3.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,当主线程向所述worker线程传入参数时,通过后台进程绑定self.onmessage方法获取主线程传递的参数,其中当postmessage被触发后,onmessage获取对应的postmessage消息。
4.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,当后台进程获取到对应的参数后,进一步根据所述参数执行进程,其中所述参数为约定参数。
5.根据权利要求4所述的一种基于Web Worker的前端多进程计算方法,其特征在于,当所述后台进程执行完毕后,采用self.postMessage对获取参数执行进程的结果以参数的形式传递给对应创建的线程。
6.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,采用Worker.onmessage获取进程执行结果的关键词信息,并根据所述关键词信息判断获取的信息是否正确,若正确则直接将绑定的成功回调返回给主线程。
7.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,若后台进程中存在执行错误信息,则根据所述关键词信息判断获取的信息是否正确,若存在错误,则通过Worker.onerror获取错误信息后将绑定的错误回调返回给主线程。
8.根据权利要求1所述的一种基于Web Worker的前端多进程计算方法,其特征在于,主进程在获取成功回调和错误回调后,关闭后台进程。
9.一种基于Web Worker的前端多进程计算系统,其特征在于,所述系统执行权利要求1-8中任意一项所述的一种基于Web Worker的前端多进程计算方法。
10.一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行权利要求1-8中任意一项所述一种基于Web Worker的前端多进程计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210248436.7A CN114595011A (zh) | 2022-03-14 | 2022-03-14 | 一种基于Web Worker的前端多进程计算方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210248436.7A CN114595011A (zh) | 2022-03-14 | 2022-03-14 | 一种基于Web Worker的前端多进程计算方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595011A true CN114595011A (zh) | 2022-06-07 |
Family
ID=81809637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210248436.7A Pending CN114595011A (zh) | 2022-03-14 | 2022-03-14 | 一种基于Web Worker的前端多进程计算方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595011A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033222A (zh) * | 2022-06-22 | 2022-09-09 | 吉林大学 | 线程管理方法、装置、电子设备、计算机可读存储介质 |
-
2022
- 2022-03-14 CN CN202210248436.7A patent/CN114595011A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033222A (zh) * | 2022-06-22 | 2022-09-09 | 吉林大学 | 线程管理方法、装置、电子设备、计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10540417B2 (en) | Determining web page processing state | |
CN110019133B (zh) | 数据在线迁移方法和装置 | |
CN108337314B (zh) | 分布式系统、用于主服务器的信息处理方法和装置 | |
US9645743B2 (en) | Selective I/O prioritization by system process/thread | |
US8661441B2 (en) | Transaction load reduction for process completion | |
US20190377593A1 (en) | Communication method, apparatus and system for virtual machine and host machine | |
US8918795B2 (en) | Handling and reporting of object state transitions on a multiprocess architecture | |
CN110825440B (zh) | 指令执行方法和装置 | |
JP2003029987A (ja) | スレッド終了方法及び装置並びに並列プロセッサシステム | |
CN110413210B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
CN113010275B (zh) | 一种中断处理方法和装置 | |
CN110659142A (zh) | 消息队列处理方法及装置、电子设备、存储介质 | |
US9207967B2 (en) | Using nonspeculative operations for lock elision | |
CN110825437B (zh) | 用于处理数据的方法和装置 | |
US20200387382A1 (en) | Mechanism for instruction fusion using tags | |
CN109033814A (zh) | 智能合约触发方法、装置、设备及存储介质 | |
CN110609755A (zh) | 跨区块链节点的消息处理方法及装置、设备、介质 | |
CN114595011A (zh) | 一种基于Web Worker的前端多进程计算方法和系统 | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
CN110825461B (zh) | 数据处理方法和装置 | |
US10977042B2 (en) | Using expedited RCU grace periods to avoid out-of-memory conditions for offloaded RCU callbacks | |
US9430196B2 (en) | Message inlining | |
US20050060706A1 (en) | Method and apparatus for performing real-time commands in a non real-time operating system environment | |
CN111563000B (zh) | 一种文件生成方法、智能终端及存储介质 | |
US9396044B2 (en) | Memory efficient thread-level speculation |
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 |