Multi-version asynchronous dynamic software update system and method for applications with multiple threads
First Claim
1. A method for updating a software component used by a multi-threaded application, comprising:
- storing, in memory, a first function table that points to executable code in the memory for functions from a first version of the software component;
setting a global pointer to point to the first function table;
copying the global pointer to a local pointer of a first application thread of the multi-threaded application;
storing, in the memory, a second function table that points to executable code in the memory for functions from a second version of the software component;
referencing the first function table that the local pointer of the first application thread points to, when running the first application thread, to execute the functions from the first version of the software component;
responsive to receiving a signal indicating that the second version of the software component is available, updating the global pointer to point to the second function table;
copying the global pointer to a local pointer of a second application thread of the multi-thread application; and
referencing the second function table that the local pointer of the second application thread points to, when running the second application thread that is active concurrently with the first application thread, to execute the functions from the second version of the software component.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for using multiple versions of a software component, includes storing, in memory, a first function table that points to executable code in the memory for functions from a first version of the software component, and storing, in the memory, a second function table that points to executable code in the memory for functions from a second version of the software component, referencing the first function table, when running a first application thread, to execute the functions from the first version of the software component; and referencing the second function table, when running a second application thread that is active concurrently with the first application thread, to execute the functions from the second version of the software component.
15 Citations
15 Claims
-
1. A method for updating a software component used by a multi-threaded application, comprising:
-
storing, in memory, a first function table that points to executable code in the memory for functions from a first version of the software component; setting a global pointer to point to the first function table; copying the global pointer to a local pointer of a first application thread of the multi-threaded application; storing, in the memory, a second function table that points to executable code in the memory for functions from a second version of the software component; referencing the first function table that the local pointer of the first application thread points to, when running the first application thread, to execute the functions from the first version of the software component; responsive to receiving a signal indicating that the second version of the software component is available, updating the global pointer to point to the second function table; copying the global pointer to a local pointer of a second application thread of the multi-thread application; and referencing the second function table that the local pointer of the second application thread points to, when running the second application thread that is active concurrently with the first application thread, to execute the functions from the second version of the software component. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A processing system configured to update a live software component used by a multi-threaded application, comprising:
-
a processing device; a memory associated with the processing device; a non-transient storage for storing instructions that when loaded to the memory and executed by the processing device cause the processing system to; store, in the memory, a first function table that points to executable code in the memory for functions from a first version of a software component; set a global pointer to point to the first function table; copy the global pointer to a local pointer of a first application thread of the multi-threaded application; store, in the memory, a second function table that points to executable code in the memory for functions from a second version of the software component; reference the first function table that the local pointer of the first application thread points to, when running the first thread of an application, to execute the functions from the first version of the software component; responsive to receiving a signal indicating that the second version of the software component is available, update the global pointer to point to the second function table; copy the global pointer to a local pointer of a second application thread of the multi-thread application; and reference the second function table that the local pointer of the second application thread points to, when running the second thread of the application that is active concurrently with the first thread, to execute the functions from the second version of the software component. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A computer program product comprising a non-transient storage medium storing instructions to cause a processing device to:
store, in memory allocated to a program, a first function table that points to executable code in the memory for functions from a first version of a software component; set a global pointer to point to the first function table; copy the global pointer to a local pointer of a first application thread of the multi-threaded application; store, in the memory, a second function table that points to executable code in the memory for functions from a second version of the software component; reference the first function table that the local pointer of the first application thread points to, when running the first application thread, to execute the functions from the first version of the software component; responsive to receiving a signal indicating that the second version of the software component is available, update the global pointer to point to the second function table in accordance with the received signal; copy the global pointer to a local pointer of a second application thread; and reference the second function table that the local pointer of the second application thread points to, when running the second application thread that is active concurrently with the first application thread, to execute the functions from the second version of the software component. - View Dependent Claims (15)
Specification