Difference between revisions of "Uno/Effort/Binary/Extend Threading-Model"
m (-> finished.) |
m (Fixed path to cppuhelper/tests/loader.) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Type: [[Uno/Term/Effort|effort]] Status: | + | Type: [[Uno/Term/Effort|effort]] Status: Finished Owner: [[KR|Kay Ramme]] Availability: URE 1.3 (SRC680_m212) |
'''The mission of this effort is, to extend the [[Uno]] threading-model, to provide a way to design an applications [[Uno/Term/Threading-Architecture|threading-architecture]] independent of the implementations.''' This can be described as [[Uno/Term/Transparent Concurrency|'''transparent-concurrency''']] wrt the implementations. | '''The mission of this effort is, to extend the [[Uno]] threading-model, to provide a way to design an applications [[Uno/Term/Threading-Architecture|threading-architecture]] independent of the implementations.''' This can be described as [[Uno/Term/Transparent Concurrency|'''transparent-concurrency''']] wrt the implementations. | ||
Line 21: | Line 21: | ||
{|border="1" cellspacing="0" class="wikitable" | {|border="1" cellspacing="0" class="wikitable" | ||
|- style="background:#efefef;" | |- style="background:#efefef;" | ||
− | + | ! Area !! Title !! State !! [[CWS]] | |
|- | |- | ||
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Threading-Model|Specify Threading-Model]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Threading-Model|Specify Threading-Model]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | ||
Line 64: | Line 64: | ||
| [[Uno/Binary|Binary Uno]] || Adapt Component Loader to support Purpose Environments || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | | [[Uno/Binary|Binary Uno]] || Adapt Component Loader to support Purpose Environments || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | ||
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Cpp/ | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Cpp/Modules/CPPUhelper/tests/Loader|Test for Component Loaders support of Purpose Environments]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
| [[Uno/Binary|Binary Uno]] || Add support for extend getImplEnv function || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | | [[Uno/Binary|Binary Uno]] || Add support for extend getImplEnv function || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} | ||
Line 134: | Line 134: | ||
{|border="1" cellspacing="0" class="wikitable" | {|border="1" cellspacing="0" class="wikitable" | ||
|- style="background:#efefef;" | |- style="background:#efefef;" | ||
− | + | ! Area !! Title !! State !! [[CWS]] | |
|- | |- | ||
| [[Uno/Cpp|C++ Uno]] || | | [[Uno/Cpp|C++ Uno]] || | ||
Line 160: | Line 160: | ||
[[Category:Uno]] | [[Category:Uno]] | ||
[[Category:Uno:Binary]] | [[Category:Uno:Binary]] | ||
+ | [[Category:Multi-Threading]] |
Latest revision as of 12:40, 20 October 2009
Type: effort Status: Finished Owner: Kay Ramme Availability: URE 1.3 (SRC680_m212)
The mission of this effort is, to extend the Uno threading-model, to provide a way to design an applications threading-architecture independent of the implementations. This can be described as transparent-concurrency wrt the implementations.
Problem
Not everything should be required to be implemented thread-safe. E.g. see comments from John Ousterhout regarding multi-threading. Encapsulation of thread-affinity should be easy.
Solution
The extended Uno threading-model is basically 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 Object Binary Interface (OBI) and the same purpose. An environment can only be entered and left via defined doors, being proxy objects representing objects outside respectively inside the environment.
All calls from one Uno Environment to another are intercepted, references to local objects are replaced with proxies to these local objects, this operation is called "mapping" in Uno terms. Actually, an object gets "mapped" from one Uno Environment to another. Proxies already representing to be mapped objects of another Uno 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 to before a call enters an environment.
Time Frame
Understanding of the topic let us think, that the first changes of OOo / Uno on behalf of the extended threading-model were going to be integrated into one of the updates in 2006. The plan was, to implement the whole stack into the utf2 CWS, which had been done, to ensure that everything worked as expected. The implementation has finally be done in the bunoexttm CWS and is currently in QA. Expectation is, that the extended Binary Uno threading model is going to be available with OOo 2.3.
Tasks
Dependencies
Area | Title | State | CWS |
---|---|---|---|
C++ Uno |
Misc Improvements
|
100% | krmisc (SRC680_m191) |
Binary Uno |
Preparation
|
100% | bunoidmap (SRC680_m196) |
Binary Uno | Implement Environment Tester | 100% | bunoexttm |
Binary Uno | Implement Mapping Tester | 100% | bunoexttm |