Difference between revisions of "Uno/Effort/Binary/Extend Threading-Model"
(Added Runtime Column) |
(Added some thoughts.) |
||
Line 15: | Line 15: | ||
Purpose environments may be dedicated to MutExes or threads. In the sense, that a MutEx becomes acquired or a thread gets switched before a call enters an environment. | Purpose environments may be dedicated to MutExes or threads. In the sense, that a MutEx becomes acquired or a thread gets switched before a call enters an environment. | ||
− | + | ; Implementations: Code may actually vary in its capabilities regarding 'Transparent Concurrency'. Code may be differentiated into Code using | |
+ | :* global variables, or | ||
+ | :* thread local variables, or | ||
+ | :* parameters only, or | ||
+ | :* value parameters only, or | ||
+ | :* doing internal protection of critical sections, or | ||
+ | :* not doing internal protection. | ||
+ | : Such categorizations help to decide, what one can do with a particular implemention. Also the codes threading type is a compile time information and may therefor be used during compilation, so that the compiler may give errors when mixing thread safe and thread unsafe code in a multi thread scenario. | ||
; Dependencies: | ; Dependencies: |
Revision as of 09:42, 21 April 2006
Creating the UNO Threading Framework
Status: in progress
The goal of the UNO threading framrwork is, to provide a way to design an applications threading architecture independent of the implementation. This can be described as Transparent Concurrency, in respect to the implementations.
The UNO Threading Framework basically is going to introduce the notion of an apartment into the UNO world. An apartment in UNO terms is a purpose environment. Such an environment can be seen as a dedicated part of a process, giving space for objects of the same ABI and the same purpose. An environment can only be entered and left via defined doors, being proxy objects representing objects outside respectively inside the apartment.
All calls from one environment to another are intercepted, references to local objects get replaced with proxies to these local objects, this operation is called "mapping" in UNO terms. An object gets "mapped" from one environment to another. Proxies already representing to be mapped objects of another environment become reused during the "mapping" operation, ensuring that an object can only be "mapped" once.
Purpose environments may be dedicated to MutExes or threads. In the sense, that a MutEx becomes acquired or a thread gets switched before a call enters an environment.
- Implementations
- Code may actually vary in its capabilities regarding 'Transparent Concurrency'. Code may be differentiated into Code using
- global variables, or
- thread local variables, or
- parameters only, or
- value parameters only, or
- doing internal protection of critical sections, or
- not doing internal protection.
- Such categorizations help to decide, what one can do with a particular implemention. Also the codes threading type is a compile time information and may therefor be used during compilation, so that the compiler may give errors when mixing thread safe and thread unsafe code in a multi thread scenario.
- Dependencies
Area | Task | State |
Uno | Specify the Threading Model | 90% |
Binary Uno | the Threading Model | 90% |
Binary Uno | Debugging Bridge | 90% |
C++ Uno | the Threading Model | 75% |
Java Uno | the Threading Model | 0% |
CLI Uno | Uno Threading Model | 0% |
Remote Uno | Uno Threading Model | 0% |
C++ Uno | Cpp-Uno Bridge - Purpose Environment Support | UTF2 |
C++ Uno | Misc Improvements | UTF2 |
C++ Uno | Purpose Bridge Implementation Helper | UTF2 |
Binary Uno | Jni-Uno Bridge - Purpose Environment Support | 0% |
Binary Uno | ABI Bridge Tester | 0% |
Binary Uno | Purpose Bridge Tester | 0% |
Java Uno | Java-Urp Bridge - Purpose Environment Support | 0% |
Binary Uno | Purpose Environment Support for the Component Loader | 0% |
Binary Uno | Uno-Urp Bridge - Purpose Environment Support | 0% |
Current understanding of the topic lets us think, that the changes of OOo / UNO on behalf of the Threading Framework are going to be integrated into one of the next updates, probably early in 2006.