Methods and apparatus for multi-thread processing utilizing a single-context architecture
First Claim
1. A multi-thread process comprising:
- creating a context, said context comprising location variables, said location variables each indicative of an address of data;
creating a version of said context; and
setting a location variable in said version of said context to indicate an address of said data.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus for software threads to access both shared and unshared data in a single software unit. Prior to a thread executing a set of computer language instructions in a collection of software units, it creates a copy of the respective location data segment of the collection of software units. Thereafter, prior to the thread accessing a software unit in the collection of software units that has an associated set of shared data, the thread sets a pointer in its location data segment copy to the equivalent value in the location data segment of the collection of software units. The thread will thereafter access the set of data associated with the software unit when it executes the respective software unit.
Also, prior to the thread accessing a software unit in the collection of software units that has an associated set of unshared data, the thread creates a copy of the set of unshared data. The thread thereafter sets a pointer in its location data segment copy to the start address in memory of the local copy of the unshared data set. The thread will thereafter access the local set of unshared data when it executes the respective software unit.
-
Citations
31 Claims
-
1. A multi-thread process comprising:
-
creating a context, said context comprising location variables, said location variables each indicative of an address of data;
creating a version of said context; and
setting a location variable in said version of said context to indicate an address of said data. - View Dependent Claims (2, 3, 4, 5, 6)
creating a copy of a subset of said data; and
setting a second location variable in said version of said context to indicate an address of said copy of said subset of said data.
-
-
5. The multi-thread process of claim 4, wherein said copy of said subset of said data is a copy of a subset of data comprising unshared data.
-
6. The multi-thread process of claim 4, wherein said location variables in said context and in said version of said context comprise pointers.
-
7. A system that implements multi-thread processing, comprising:
-
a computer comprising software code, wherein said software code creates a context, said context comprising pointers to data, creates a version of said context, and sets a pointer in said version of said context to point to an address of said data. - View Dependent Claims (8, 9, 10, 11)
sets a second pointer in said version of said context to point to an address of said copy of said subset of said data. -
11. The system of claim 10, wherein said copy of said subset of said data is a copy of a subset of data comprising unshared data.
-
-
12. A computer implemented method of thread processing, wherein a context exists for a software library that contains two or more software packages, each of the software packages comprising one or more computer program instructions, said method comprising:
-
creating a first table of entries for a first software thread;
setting a first entry of the first table of entries to point to the same address for a first set of data to be accessed by a first software package of the software library that the first entry of the context points to;
setting a second entry of the first table of entries to point to an address for a first copy of a second set of data to be accessed by a second software package of the software library, wherein the address in the second entry of the first table of entries is different than the address in the second entry of the context;
creating a second table of entries for a second software thread;
setting a first entry of the second table of entries to point to the same address for the first set of data to be accessed by the first software package of the software library that the first entry of the context points to; and
setting a second entry of the second table of entries to point to an address for a second copy of the second set of data to be accessed by the second software package of the software library, wherein the address in the second entry of the second table of entries is different than the address in the second entry of the first table of entries and is also different than the second entry of the context. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
deleting the first copy of the second set of data at some time after the first software thread executes the second software package; and
deleting the second copy of the second set of data at some time after the second software thread executes the second software package.
-
-
16. The computer implemented method of thread processing of claim 12, further comprising the steps of:
-
deleting the first table of entries for the first software thread at some time after the first software thread executes both the first software package and the second software package; and
deleting the second table of entries for the second software thread at some time after the second software thread executes both the second software package and the second software package.
-
-
17. The computer implemented method of claim 12, wherein the first set of data comprises shared data.
-
18. The computer implemented method of claim 12, wherein the second set of data comprises unshared data.
-
19. The computer implemented method of claim 12, wherein the context is a table of pointers and each pointer of the context points to a start address for the location of a set of data for a software package of the software library.
-
20. The computer implemented method of thread processing of claim 12, wherein said step of creating the second copy of the second set of data and said step of setting a second entry of the second table of entries are both executed prior to the first software thread executing the first software package and prior to the first software thread executing the second software package.
-
21. A system for multi-thread processing, comprising:
-
a computer;
a data storage device, said data storage device having stored thereon a software library comprising two or more software packages, wherein each of the software packages comprises one or more computer program instructions, the data storage device storing a first set of data for a first software package and a second set of data for a second software package, and the data storage device storing a context for the software library, wherein a first entry of the context comprises a first pointer for addressing the first set of data and a second entry of the context comprises a second pointer for addressing the second set of data; and
a user station comprising software code to create a table of entries for a first software thread, set a first entry of the table of entries to point to the first set of data, and set a second entry of the table of entries to point to a third set of data, wherein the third set of data is a copy of the second set of data. - View Dependent Claims (22, 23, 24, 25, 26, 27)
create a second table of entries for a second software thread, set a first entry of the second table of entries to point to the first set of data, and set a second entry of the second table of entries to point to a fourth set of data, wherein the fourth set of data is a copy of the second set of data. -
27. The system for multi-thread processing of claim 26, wherein the user station comprises software code to delete the third set of data at some time after the first software thread executes the second software package, and software code to delete the fourth set of data at some time after the second software thread executes the second software package.
-
-
28. A machine readable medium having stored thereon a program comprising computer instructions for
creating a first context for a first software thread; -
setting a first entry of the first context to point to an address for locating a first set of data for a first software program;
setting a second entry of the first context to point to an address for locating a first copy of a second set of data for a second software program;
creating a second context for a second software thread;
setting a first entry of the second context to point to an address for locating the first set of data; and
setting a second entry of the second context to point to an address for locating a second copy of the second set of data. - View Dependent Claims (29, 30, 31)
-
Specification