Difference between revisions of "Uno/Effort/Binary/Extend Threading-Model"
m (→Tasks: Fixed color.) |
m (→Tasks: Replaced "green" with "lightgreen".) |
||
Line 23: | Line 23: | ||
| Area || Title || State || [[CWS]] | | Area || Title || State || [[CWS]] | ||
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Threading-Model|Specify Threading-Model]] || style="background: | + | | [[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/Environment Stack|Specify Environment Stack]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Environment Stack|Specify Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Stack|Implement Environment Stack]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Stack|Implement Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Stack|Implement Test for Environment Stack]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Stack|Implement Test for Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Cascaded Mapping|Specify Cascaded Mapping]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Cascaded Mapping|Specify Cascaded Mapping]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Cascaded Mapping|Implement Cascaded Mapping]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Cascaded Mapping|Implement Cascaded Mapping]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Cascaded Mapping|Implement Test for Cascaded Mapping]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Cascaded Mapping|Implement Test for Cascaded Mapping]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Environment Descriptor|Specify Environment Descriptor]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Environment Descriptor|Specify Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Descriptor|Implement Environment Descriptor]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Descriptor|Implement Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Descriptor|Implement Test for Environment Descriptor]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Descriptor|Implement Test for Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Environment Substitution|Specify Environment Substitution]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Environment Substitution|Specify Environment Substitution]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Substitution|Implement Environment Substitution]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Environment Substitution|Implement Environment Substitution]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Substitution|Implement Test for Environment Substitution]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Environment Substitution|Implement Test for Environment Substitution]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Thread Unsafety Bridge|Specify Thread Unsafety Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Thread Unsafety Bridge|Specify Thread Unsafety Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Thread Unsafety Bridge|Implement Thread Unsafety Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Thread Unsafety Bridge|Implement Thread Unsafety Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Thread Unsafety Bridge|Implement Test for Thread Unsafety Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Thread Unsafety Bridge|Implement Test for Thread Unsafety Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Thread Affinity Bridge|Specify Thread Affinity Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Spec/Thread Affinity Bridge|Specify Thread Affinity Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Thread Affinity Bridge|Implement Thread Affinity Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Thread Affinity Bridge|Implement Thread Affinity Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Thread Affinity Bridge|Implement Test for Thread Affinity Bridge]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Test/Thread Affinity Bridge|Implement Test for Thread Affinity Bridge]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || Adapt Component Loader to support Purpose Environments || style="background: | + | | [[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/Module/CPPUhelper/tests/Loader|Test for Component Loaders support of Purpose Environments]] || style="background: | + | | [[Uno/Binary|Binary Uno]] || [[Uno/Cpp/Module/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: | + | | [[Uno/Binary|Binary Uno]] || Add support for extend getImplEnv function || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Binary|Binary Uno]] || Adapt currentContext retrieval to support Purpose Environments || style="background: | + | | [[Uno/Binary|Binary Uno]] || Adapt currentContext retrieval to support Purpose Environments || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || Adapt bootstrapping components || style="background: | + | | [[Uno/Cpp|C++ Uno]] || Adapt bootstrapping components || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Bootstrap|Test for bootstrapping]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Bootstrap|Test for bootstrapping]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || Add Purpose Environment to C++ bridges || style="background: | + | | [[Uno/Cpp|C++ Uno]] || Add Purpose Environment to C++ bridges || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Threading-Model|Specify Threading-Model]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Threading-Model|Specify Threading-Model]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Stack|Specify Environment Stack]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Stack|Specify Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Stack|Implement Environment Stack]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Stack|Implement Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Stack|Implement Test for Environment Stack]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Stack|Implement Test for Environment Stack]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Map Helpers|Specify Map Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Map Helpers|Specify Map Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Map Helpers|Implement Map Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Map Helpers|Implement Map Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Map Helpers|Implement Test for Map Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Map Helpers|Implement Test for Map Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Shield Helpers|Specify Shield Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Shield Helpers|Specify Shield Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Shield Helpers|Implement Shield Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Shield Helpers|Implement Shield Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Shield Helpers|Implement Test for Shield Helpers]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Shield Helpers|Implement Test for Shield Helpers]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/FreeReference|Specify FreeReference]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/FreeReference|Specify FreeReference]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/FreeReference|Implement FreeReference]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/FreeReference|Implement FreeReference]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/FreeReference|Implement Test for FreeReference]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/FreeReference|Implement Test for FreeReference]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Guard|Specify Environment Guard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Guard|Specify Environment Guard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Guard|Implement Environment Guard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Guard|Implement Environment Guard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Guard|Implement Test for Environment Guard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Guard|Implement Test for Environment Guard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Descriptor|Specify Environment Descriptor]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment Descriptor|Specify Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Descriptor|Implement Environment Descriptor]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment Descriptor|Implement Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Descriptor|Implement Test for Environment Descriptor]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment Descriptor|Implement Test for Environment Descriptor]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment AntiGuard|Specify Environment AntiGuard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Environment AntiGuard|Specify Environment AntiGuard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment AntiGuard|Implement Environment AntiGuard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Environment AntiGuard|Implement Environment AntiGuard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment AntiGuard|Implement Test for Environment AntiGuard]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Environment AntiGuard|Implement Test for Environment AntiGuard]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Purpose Bridge Implementation Helper|Specify Purpose Bridge Implementation Helper]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Spec/Purpose Bridge Implementation Helper|Specify Purpose Bridge Implementation Helper]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Purpose Bridge Implementation Helper|Implement Purpose Bridge Implementation Helper]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Purpose Bridge Implementation Helper|Implement Purpose Bridge Implementation Helper]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|- | |- | ||
− | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Purpose Bridge Implementation Helper|Test for Purpose Bridge Implementation Helper]] || style="background: | + | | [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Test/Purpose Bridge Implementation Helper|Test for Purpose Bridge Implementation Helper]] || style="background:lightgreen;" | 100% || {{Uno/CWS|SRC680|bunoexttm}} |
|} | |} | ||
Revision as of 15:19, 7 March 2007
Type: effort Status: in progress Owner: Kay Ramme
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
Current understanding of the topic lets us think, that the first changes of OOo / Uno on behalf of the extend threading-model are going to be integrated into one of the next updates, probably late in 2006. The plan is, to implement the whole stack into the utf2 CWS to ensure that everything works as expected, and to split the implementation into 'integration chunks', to be integrated with different CWS, to reduce the risk of breaking anything.
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 |