Disclosure of Invention
In view of this, embodiments of the present specification provide a method, a system, and an apparatus for running a component of an illusion engine, which are used to solve the performance bottleneck problem of a web browser control provided by an illusion engine platform in the prior art.
The embodiment of the specification adopts the following technical scheme:
an embodiment of the present specification provides a method for operating a component of a ghost engine, where the method includes:
starting internal message loop processing of an embedded framework control of a ghost engine using a first thread independent of a main thread of the ghost engine;
after one internal message cycle processing is finished, page drawing is carried out by an internal function of the embedded frame control;
and after the page is drawn, sending a drawing result to a web browser control of the illusion engine by the embedded frame control, and rendering by the web browser control.
In one embodiment of the present specification, a first thread independent of a main thread of a ghost engine is used to invoke an internal message loop process that opens an embedded framework control of the ghost engine, wherein a message loop process function of the embedded framework control is invoked using the first thread to open the internal message loop process.
In an embodiment of the present specification, a message loop processing function of the embedded framework control is called using the first thread to start the internal message loop processing, wherein:
and sending a message loop execution request to a message loop component of the embedded framework control by using the first thread so as to start new one-time internal message loop processing.
In an embodiment of the present specification, invoking a message loop processing function of the embedded framework control using the first thread to start the internal message loop processing includes:
judging whether the message loop processing function needs to be called currently, wherein a singleton component of the web browser control is used for acquiring a time point of needing to call the message loop processing function from the embedded frame control so as to judge whether the message loop processing function needs to be called;
and when the message loop processing function needs to be called, calling the message loop processing function by using the first thread.
In an embodiment of this specification, determining whether the message loop processing function needs to be called currently further includes:
sending, by the ghost engine main thread, a base time message in the ghost engine that represents a lapse of time to a singleton component of the web browser control;
and when the singleton component receives the basic time message, judging whether the message loop processing function needs to be called currently.
In an embodiment of the present specification, the page rendering by the internal function of the embedded frame control includes:
sending a drawing event to a browsing management component of the embedded frame control by a message circulation component of the embedded frame control;
the browsing management component sends a drawing request to a page browsing window component of the embedded frame control after confirming the drawing event;
and the page browsing window assembly draws based on the drawing request.
In an embodiment of this specification, after the page is rendered, the sending, by the embedded frame control, a rendering result to a web browser control, and the rendering by the web browser control, includes:
after the drawing of the page browsing window component is finished, sending a drawing result to a page browsing view port component of the web browser control;
and requesting to render from a page browsing view component of the web browser control by the page browsing view port component.
In an embodiment of this specification, the sending, by the browsing management component, a drawing request to the page browsing window component of the embedded frame control after confirming the drawing event includes:
sending, by the browse management component, the draw request to the ghost engine main thread;
and transmitting the drawing request to the page browsing window component by using the illusion engine main thread.
In an embodiment of the present specification, the page is rendered by an internal function of the embedded frame control, where the local page is rendered by the internal function of the embedded frame control.
In an embodiment of the present specification, the local page rendering by the internal function of the embedded frame control includes:
sending a drawing event to a browsing management component of the embedded frame control by a message circulation component of the embedded frame control;
the browse management component acquires an updating area after confirming the drawing event;
the browsing management component sends a drawing request containing the updating area to a page browsing window component of the embedded frame control;
and the page browsing window component carries out local page drawing based on the drawing request.
The embodiment of the present specification further provides a component system for a ghost engine, where the system includes an embedded frame control and a web browser control, where:
the embedded frame control is used for starting internal message circulation processing by a first thread independent of a main thread of a ghost engine;
the embedded frame control is also used for drawing a page by an internal function of the embedded frame control after one-time internal message circulation processing is finished, and sending a drawing result to the web browser control after drawing is finished;
and the webpage browser control is used for rendering based on the received drawing result.
The present specification also proposes a device for information processing at an accessing device, the device comprising a memory for storing computer program instructions and a processor for executing the program instructions, wherein the computer program instructions, when executed by the processor, trigger the device to perform the method of the system according to the present specification.
The embodiment of the specification adopts at least one technical scheme which can achieve the following beneficial effects: according to the method of the embodiment of the specification, the internal message loop processing is started by adopting the independent thread to operate the web browser control, so that the blockage of the main thread of the illusion engine can be effectively reduced, and the rendering efficiency of the 3D scene is greatly improved.
Detailed Description
In order to make the objects, technical solutions and advantages of the present application more apparent, the technical solutions of the present application will be described in detail and completely with reference to the following specific embodiments of the present application and the accompanying drawings. It should be apparent that the described embodiments are only a few embodiments of the present application, and not all embodiments. All other embodiments obtained by a person of ordinary skill in the art based on the embodiments in the present application without making any creative effort belong to the protection scope of the present application.
Aiming at the problem of performance bottleneck of a WebBrowser control provided by an Unreal platform in the prior art, an embodiment of the specification provides a component operation method for a ghost engine. In order to propose the method of the embodiment of the present specification, the inventor firstly analyzes the operation mode of the WebBrowser control under the universal platform.
Google's Embedded frame Control (CEF) is an open source page browsing (Web browser) control for Google chrome project, supporting Windows, linux, mac platforms. The WebBrowser component provided by the Unreal platform is packaged on the Unreal platform based on CEF. Under the Unreal platform, the operation of the WebBrowser component is started by calling a message loop processing function (CefDoMessageLoopWork) of a CEF control.
As shown in fig. 1, in an application scenario, in an unregeal platform, when a web browser control (WebBrowser) needs to be run, a new internal message loop process is first requested to start (S110) from a message loop component (cefessageloop) of an embedded framework (CEF) control (call a message loop process function (CefDoMessageLoopWork)). After one message loop processing of the CEF control is finished, the message loop component (CEFMessageLoop) sends a drawing (on paint) event to the browsing management component (CEFBrowserHandler) (S120). After the browse management component (CEFBrowserHandler) confirms the on-paint event, it sends a drawing request (do-paint) to the page browse window component (cefwebrowserwindow) once (S130). The page view window component (CEFWebBrowserWindow) draws based on the drawing request, generates a drawing result (Viewport render target texture) after the drawing is finished, and sends the drawing result (Viewport render target texture) to a page view port component (WebBrowser visual) of a web browser control (WebBrowser) (S140). The pageview port component (WebBrowser view) requests rendering (render) from the pageview component (WebBrowser view) of WebBrowser (S150).
In the above steps, all operations are under the main thread (game thread) of the unregeal platform. Specifically, when the flow is started, a main thread (game thread) of the unregeal platform calls a message loop processing function (CefDoMessageLoopWork). This may cause rendering of html pages (i.e., 2D UI) by CEF to block rendering of 3D scenes (i.e., 3D UI), resulting in a drop in rendering frame rate of 3D scenes.
Therefore, based on the above analysis, in an embodiment of the present specification, the work of the main thread is reduced as much as possible, and the main thread is released. Specifically, internal message loop processing is initiated using a first thread that is independent of the ghost engine main thread. According to the method of the embodiment of the specification, the internal message loop processing is started by adopting the independent thread to operate the web browser control, so that the blockage of the main thread of the illusion engine can be effectively reduced, and the rendering efficiency of the 3D scene is greatly improved.
The technical solutions provided by the embodiments of the present description are described in detail below with reference to the accompanying drawings.
In an embodiment of the present specification, as shown in fig. 2, a component operation method flow includes:
s210, starting internal message circulation processing by using a first thread independent of the main thread of the illusion engine;
s220, after one internal message cycle processing is finished, page drawing is carried out by an internal function of the CEF control;
s230, after the drawing of the internal function of the CEF control is finished, a drawing result is sent to the WebBrowser control;
and S240, rendering the WebBrowser control according to the received drawing result.
Specifically, in one embodiment of the present specification, the internal message loop processing is initiated using a first thread call that is independent of the ghost engine main thread, wherein the message loop processing function of the CEF control is invoked using the first thread to initiate the internal message loop processing.
Specifically, in an embodiment of the present specification, page rendering is performed by an internal function of a CEF control, and includes:
sending a drawing event to a browsing management component of the CEF control by a message loop component of the CEF control;
the browsing management component sends a drawing request to a page browsing window component of the CEF control after confirming the drawing event;
the page view window component renders based on the rendering request.
Further, in an embodiment of this specification, after the internal function of the CEF control is drawn, sending a drawing result to the WebBrowser control, and rendering the drawing result by the WebBrowser control includes:
after the drawing of the page browsing window component is finished, sending a drawing result to a page browsing view port component of the WebBrowser control;
and requesting rendering from a page browsing view component of the WebBrowser control by the page browsing view port component.
Specifically, in an embodiment of the present specification, as shown in fig. 3:
s310, using a first Thread (CEF Work Thread) independent of the main Thread of the illusion engine to call a message loop processing function (CefDoMessageLoopWork) to start internal message loop processing;
s320, after one internal message loop processing is completed, sending a drawing event to a browse management component (CEFBrowserHandler) of the CEF control by a message loop component (CEFMessageLoop);
s230, the browse management component (CEFBrowserHandler) sends a drawing request to a page browse window component (CEFWebBrowserWindow) of the CEF control after confirming the drawing event;
s240, drawing the page browsing window component (CEFWebBrowserWindow) based on the drawing request, and sending a drawing result to a page browsing view port component (WebBrowserViewport) of the WebBrowser control after drawing is finished;
and S250, the page browsing view port component (WebBrowserViewport) requests the page browsing view component (WebBrowserView) of the WebBrowser control to render.
The method of the embodiment of the specification introduces a first Thread (CEF word Thread) and a main Thread (Game Thread) to Work in parallel, and the operation of a message loop processing function (CefDoMessageLoopWork) does not block the Game Thread, so that the rendering efficiency of the 3D scene can be greatly improved.
Specifically, in an embodiment of the present specification, in the process of calling a message loop processing function (CefDoMessageLoopWork) using a first thread independent from the main thread of the ghost engine to open internal message loop processing:
a message loop execution request (doceff domessageloopwork) is sent to a message loop component (CEFMessageLoop) of the CEF control using a first thread to start a new one-time internal message loop processing.
Specifically, in an embodiment of the present specification, in a process that the browse management component (CEFBrowserHandler) sends a drawing request to the page view window component (cefwebrowserwindow) of the CEF control, the browse management component (CEFBrowserHandler) sends a full page drawing request to the page view window component (cefwebrowserwindow). Correspondingly, the page view window component (CEFWebBrowserWindow) performs full page rendering.
Further, consider that WebBrowser renders against html pages (e.g., html5 pages), which are essentially 2D UI renderings. Therefore, webBrowser supports partial rendering. Based on the above analysis, in an embodiment of the present specification, in the process of performing page rendering by the internal function of the CEF control, the internal function of the CEF control performs local page rendering.
Specifically, in an embodiment of the present specification, in a process that a browsing management component (cefbrowsehandler) sends a drawing request to a page browsing window component (cefwebrowsewindow) of a CEF control after confirming a drawing event, the browsing management component (cefbrowsehandler) first acquires an update region (region that needs to be locally rendered, dirty region), and then sends the update region to the page browsing window component (cefwebrowsewindow). Correspondingly, the page view window component (CEFWebBrowserWindow) performs local page rendering for the update region.
A dirty region is acquired in a browse management component (CEFBrowser Handler), namely a rendering region needing to be redrawn is rendered, so that rendering of a useless region is reduced, and rendering efficiency of a page, namely a 2D UI is greatly improved.
Specifically, in an embodiment of the present specification, as shown in fig. 4, a flow of a component operation method includes:
s410, a first thread is used for sending a doceFMessageLoopWork request to a message loop component (CEFMessageLoop) of the CEF control so as to start new internal message loop processing;
s420, after one internal message loop processing is completed, sending a drawing event to a browse management component (CEFBrowser Handler) of the CEF control by the CEFMNessagelLoop;
s430, acquiring an update region (dirty region) after the browse management component (CEFBrowserHandler) confirms the drawing event;
s431, the browse management component (CEFBrowserHandler) sends a drawing request to the page browse window component (CEFWebBrowserWindow), and the drawing request comprises an updating area;
s440, a page browsing window component (CEFWebBrowserWindow) performs local page drawing aiming at the updating area, and after drawing is finished, a drawing result is sent to a page browsing view port component (WebBrowserViewport) of the WebBrowser control;
s450, the page view port component (WebBrowserViewport) requests the page view component (WebBrowserView) of the WebBrowser control to render.
In an embodiment of the present specification, a local refresh of the 2D UI is performed by acquiring an update region (dirty region), so that a refresh of a whole page is avoided, and thus the page refresh efficiency of the 2D UI is greatly improved.
Further, in order to avoid the Thread running confusion, in an embodiment of the present specification, the running result of the first Thread (cefwork Thread) is returned to the main Thread (Game Thread). Specifically, in one embodiment of the present specification, a jump is made to the main thread before page rendering is performed by the page view window component (CEFWebBrowserWindow). Specifically, in an embodiment of the present specification, in a process of sending a drawing request to a page view window component (CEFWebBrowserWindow) of a CEF control after a browse management component (CEFBrowserHandler) confirms a drawing event:
sending a drawing request to a ghost engine main Thread (Game Thread) by a browse management component (CEFBrowseHandler);
the drawing request is passed to a page view window component (CEFWebBrowserWindow) using the ghost engine main thread.
Specifically, in an embodiment of the present specification, as shown in fig. 5, a flow of a component operation method includes:
s510, a first thread is used for sending a do CefDoMessaeLoopWork request to a message loop component (CEFMesseLoop) of a CEF control so as to start new one-time internal message loop processing;
s520, after one internal message loop processing is completed, sending a drawing event to a browsing management component (CEFBrowserHandler) of the CEF control by the CEFMNessagelLoop;
s530, the browse management component (CEFBrowser handler) acquires an update region (dirty region) after confirming the drawing event;
s531, the browse management component (CEFBrowserHandler) sends the dirty region to the Game Thread of Unreal in a message communication mode among threads;
s532, the dirty region is transmitted to a page browsing window component (CEFWebBrowserWindow) by the Game Thread;
s540, a page browsing window component (CEFWebBrowserWindow) performs local page drawing aiming at the updating area, and after drawing is finished, a drawing result is sent to a page browsing view port component (WebBrowserViewport) of the WebBrowser control;
and S550, requesting rendering from a page view component (WebBrowserView) of the WebBrowser control by the page view port component (WebBrowserView).
Further, in an embodiment of the present specification, in order to effectively reduce the calling frequency of the message loop processing function (CefDoMessageLoopWork), a fixed time interval is not used to call the message loop processing function (CefDoMessageLoopWork). Specifically, in an embodiment of the present specification, in the process of using the first thread to call the message loop processing function (CefDoMessageLoopWork) to open the internal message loop processing:
judging whether a message loop processing function (CefDoMessageLoopWork) needs to be called currently;
when a message loop processing function (CefDoMessageLoopWork) of the CEF control needs to be called, the message loop processing function (CefDoMessageLoopWork) is called using the first thread.
Specifically, in an embodiment of the present specification, the external _ message _ pump option of the CEF is used to determine whether a message loop processing function (CefDoMessageLoopWork) needs to be called currently. Specifically, after the external _ message _ pump is turned on, the CEF control provides a next time interval in which a message loop processing function (CefDoMessageLoopWork) is required. Specifically, the browse management component (cefbrowser handler) of the CEF control provides a next message loop handling function (CefDoMessageLoopWork) time interval to be performed.
Specifically, in an embodiment of the present specification, in the process of determining whether a message loop processing function (CefDoMessageLoopWork) needs to be called currently:
a single-case component of a WebBrowser control (WebBrowsersingleton) is used for acquiring a time point needing to call a message loop processing function (CefDoMessageLoopWork) from a CEF control to judge whether the message loop processing function (CefDomessageLoopWork) needs to be called or not.
Further, in an embodiment of the present specification, a main thread (game thread) is used to open a call flow of a message loop processing function (CefDoMessageLoopWork). Specifically, in an embodiment of the present specification:
sending a basic time message () representing the time lapse in the illusion engine to a singleton component (WebBrowsersingleton) of a WebBrowser control by the main thread of the illusion engine, wherein specifically, a Tick message is the basic time message representing the time lapse in Unreal, and a Tick message exists each time the time develops one step forwards;
when a singleton component (WebBrowserSingleton) receives a basic time message, whether a message loop processing function (CefDoMessageLoopWork) needs to be called currently is judged.
Further, in an embodiment of the present specification, when the singleton component (WebBrowserSingleton) determines whether the message loop processing function (CefDoMessageLoopWork) needs to be called currently, the first thread is notified to be started to call the message loop processing function (CefDoMessageLoopWork).
Specifically, in an embodiment of the present specification, as shown in fig. 6, a flow of a component operation method includes:
s600, the Game Thread sends the Tick message to a singleton (WebBrowsersingleton) for processing;
s601, the singleton component (WebBrowsersingleton) requests a browsing management component (CEFBrowsHandler) for a time point needing to call a message loop processing function (CefDomessageLoopWork) next time;
s602, the browse management component (CEFBrowser) returns the time point of the next message loop processing function (CefDoMessageLoopWork) to be called, and the singleton component (WebBrowsersingleton) judges whether the current time point needs to call the message loop processing function (CefDoMessageLoopWork);
s610, when a message loop processing function (CefDoMessageLoopWork) needs to be called, a first thread is used for sending a do message loop processing function (CefDoMessageLoopWork) request to a message loop component (CEFMessageLooop) of a CEF control so as to start new one-time internal message loop processing;
s620, after one internal message loop processing is completed, sending a drawing event to a browsing management component (CEFBrowserHandler) of the CEF control by the CEFMNessagelLoop;
s630, the browse management component (CEFBrowser handler) acquires an update region (dirty region) after confirming the drawing event;
s631, the browse management component (CEFBrowserHandler) sends the dirty region to the Unreal Game Thread in a message communication mode among threads;
s632, the Game Thread transmits dirty region to the page view window component (CEFWebBrowserWindow);
s640, the page browsing window component (CEFWebBrowserWindow) performs local page drawing on the updating area, and after drawing is finished, a drawing result is sent to a page browsing view port component (WebBrowserViewport) of the WebBrowser control;
s650, the page view port component (WebBrowserViewport) requests the page view component (WebBrowserView) of the WebBrowser control to render.
Based on the method of the embodiment of the specification, the embodiment of the specification also provides a component system for the illusion engine. Specifically, in an embodiment of the present specification, the system includes a CEF control and a WebBrowser control, where:
the CEF control is used for starting internal message loop processing by a first thread independent of the main thread of the illusion engine;
the CEF control is also used for performing page drawing by an internal function of the CEF control after one internal message circulation processing is finished, and sending a drawing result to the WebBrowser control after the drawing is finished;
and the WebBrowser control is used for rendering based on the received drawing result.
Further, based on the method of the present invention, the present invention also provides an apparatus for information processing at an accessing device, the apparatus comprising a memory for storing computer program instructions and a processor for executing the program instructions, wherein when the computer program instructions are executed by the processor, the apparatus is triggered to execute the method of the present invention.
In the 90 s of the 20 th century, improvements in a technology could clearly distinguish between improvements in hardware (e.g., improvements in circuit structures such as diodes, transistors, switches, etc.) and improvements in software (improvements in process flow). However, as technology advances, many of today's process flow improvements have been seen as direct improvements in hardware circuit architecture. Designers almost always obtain a corresponding hardware circuit structure by programming an improved method flow into the hardware circuit. Thus, it cannot be said that an improvement in the process flow cannot be realized by hardware physical blocks. For example, a Programmable Logic Device (PLD), such as a Field Programmable Gate Array (FPGA), is an integrated circuit whose Logic functions are determined by programming the Device by an accessing party. A digital system is "integrated" on a PLD by the designer's own programming without requiring the chip manufacturer to design and fabricate application-specific integrated circuit chips. Furthermore, nowadays, instead of manually manufacturing an Integrated Circuit chip, such Programming is often implemented by "logic compiler" software, which is similar to a software compiler used in program development and writing, but the original code before compiling is also written by a specific Programming Language, which is called Hardware Description Language (HDL), and HDL is not only one but many, such as ABEL (Advanced Boolean Expression Language), AHDL (alternate Hardware Description Language), traffic, CUPL (core universal Programming Language), HDCal, jhddl (Java Hardware Description Language), lava, lola, HDL, PALASM, rhyd (Hardware Description Language), and vhigh-Language (Hardware Description Language), which is currently used in most popular applications. It will also be apparent to those skilled in the art that hardware circuitry that implements the logical method flows can be readily obtained by merely slightly programming the method flows into an integrated circuit using the hardware description languages described above.
The controller may be implemented in any suitable manner, for example, the controller may take the form of, for example, a microprocessor or processor and a computer-readable medium storing computer-readable program code (e.g., software or firmware) executable by the (micro) processor, logic gates, switches, an Application Specific Integrated Circuit (ASIC), a programmable logic controller, and an embedded microcontroller, examples of which include, but are not limited to, the following microcontrollers: ARC 625D, atmel AT91SAM, microchip PIC18F26K20, and Silicone Labs C8051F320, the memory controller may also be implemented as part of the control logic for the memory. Those skilled in the art will also appreciate that, in addition to implementing the controller as pure computer readable program code, the same functionality can be implemented by logically programming method steps such that the controller is in the form of logic gates, switches, application specific integrated circuits, programmable logic controllers, embedded microcontrollers and the like. Such a controller may thus be regarded as a hardware component and the means for performing the various functions included therein may also be regarded as structures within the hardware component. Or even means for performing the functions may be conceived to be both a software module implementing the method and a structure within a hardware component.
The systems, devices, modules or units illustrated in the above embodiments may be implemented by a computer chip or an entity, or by a product with certain functions. One typical implementation device is a computer. In particular, the computer may be, for example, a personal computer, a laptop computer, a cellular telephone, a camera phone, a smartphone, a personal digital assistant, a media player, a navigation device, an email device, a game console, a tablet computer, a wearable device, or a combination of any of these devices.
For convenience of description, the above devices are described as being divided into various units by function, and are described separately. Of course, the functionality of the units may be implemented in one or more software and/or hardware when implementing the present application.
As will be appreciated by one skilled in the art, embodiments of the present invention may be provided as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In a typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of a computer-readable medium.
Computer-readable media, including both permanent and non-permanent, removable and non-removable media, may implement the information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), static Random Access Memory (SRAM), dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), read Only Memory (ROM), electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, a computer readable medium does not include a transitory computer readable medium such as a modulated data signal and a carrier wave.
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrases "comprising one of 8230; \8230;" 8230; "does not exclude the presence of additional like elements in a process, method, article, or apparatus that comprises that element.
The application may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The application may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
The embodiments in the present specification are described in a progressive manner, and the same and similar parts among the embodiments are referred to each other, and each embodiment focuses on the differences from the other embodiments. In particular, for the system embodiment, since it is substantially similar to the method embodiment, the description is simple, and for the relevant points, reference may be made to the partial description of the method embodiment.
The above description is only an example of the present application and is not intended to limit the present application. Various modifications and changes may occur to those skilled in the art. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application should be included in the scope of the claims of the present application.