Difference between revisions of "Uno/Effort/Binary/Extend Threading-Model"

From Apache OpenOffice Wiki
< Uno
Jump to: navigation, search
m (Fixed link to user page.)
m (Added links, fixed section levelling.)
Line 1: Line 1:
[[KR | Kay Ramme]], [mailto:Kai.Sommerfeld@sun.com]
+
[[KR|Kay Ramme]], [mailto:Kai.Sommerfeld@sun.com]
  
 
Status: in progress(UTF2) <br>
 
Status: in progress(UTF2) <br>
 
Type: [[Uno/Term/Effort|effort]]<br>
 
Type: [[Uno/Term/Effort|effort]]<br>
  
==Creating the UNO Threading Framework==
+
'''The mission of the [[Uno]] threading framework is, to provide a way to design an applications [[Uno/Term/Threading-Architecture|threading-architecture]] independent of the implementation.''' This can be described as [[Uno/Term/Transparent Concurrency|'''transparent-concurrency''']], in respect to the implementations.
'''The mission of the UNO threading framework is, to provide a way to design an applications threading architecture independent of the implementation.''' This can be described as [[Uno/Term/Transparent Concurrency|'''Transparent Concurrency''']], in respect to the implementations.
+
  
===Problem===
+
==Problem==
No everything should be required to be implemented [[Uno/Term/Thread Safe|thread safe]]. See [http://home.pacbell.net/ouster/threads.pdf comments] from John Ousterhout regarding multi-threading.
+
Not everything should be required to be implemented [[Uno/Term/Thread Safe|thread-safe]]. See [http://home.pacbell.net/ouster/threads.pdf comments] from John Ousterhout regarding multi-threading.
Encapsulation of [[Uno/Term/Thread Affine|thread affinity]] should be easy.
+
Encapsulation of [[Uno/Term/Thread Affine|thread-affinity]] should be easy.
  
===Solution===
+
==Solution==
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 [[../../Spec/Purpose Environment | 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 environment.
+
The [[Uno]] Threading Framework basically is going to introduce the notion of an apartment into the [[Uno]] world. An apartment in [[Uno/Term|Uno terms]] is a [[../../Spec/Purpose Environment|Purpose Environment]]. Such an environment can be seen as a dedicated part of a process, giving space for objects of the same [[Uno/Term/Object Binary Interface|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.
  
 
[[Image:UNO_Envs.jpg]]
 
[[Image:UNO_Envs.jpg]]
  
All calls from one [[Uno/Spec/Environment | 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/Spec/Environment | UNO Environment]] to another. Proxies already representing to be mapped objects of another [[Uno/Spec/Environment | UNO Environment]] become reused during the "mapping" operation, ensuring that an object can only be "mapped" once.
+
All calls from one [[Uno/Spec/Environment|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/Spec/Environment|Uno Environment]] to another. Proxies already representing to be mapped objects of another [[Uno/Spec/Environment|Uno Environment]] become reused during the "mapping" operation, ensuring that an object can only be "mapped" once.
  
 
[[../../Spec/Purpose 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.  
 
[[../../Spec/Purpose 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.  
  
===Time Frame===
+
==Time Frame==
Current understanding of the topic lets us think, that the first changes of OOo / UNO on behalf of the Threading Framework are going to be integrated into one of the next updates, probably mid 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.
+
Current understanding of the topic lets us think, that the first changes of OOo / [[Uno]] on behalf of the Threading Framework are going to be integrated into one of the next updates, probably mid 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===
+
==Tasks==
 
:{|border="1" cellspacing="0" class="wikitable"
 
:{|border="1" cellspacing="0" class="wikitable"
 
|- style="background:#efefef;"  
 
|- style="background:#efefef;"  
Line 30: Line 29:
 
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Threading Model|Implement Threading Model]] || 90%, UTF2
 
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Threading Model|Implement Threading Model]] || 90%, UTF2
 
|-
 
|-
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Debug Bridge | Debugging Bridge]] || 90%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Impl/Debug Bridge|Debugging Bridge]] || 90%
 
|-
 
|-
 
| [[Uno/Binary|Binary Uno]] || [[Uno/Effort/Binary/New Threading Architecture|New UNO Threading Architecture]] || open
 
| [[Uno/Binary|Binary Uno]] || [[Uno/Effort/Binary/New Threading Architecture|New UNO Threading Architecture]] || open
 
|-
 
|-
| [[Uno/Binary | Binary Uno]] || [[Uno/Binary/Uno-Urp Bridge | Uno-Urp Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || 0%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Uno-Urp Bridge|Uno-Urp Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || 0%
 
|-
 
|-
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/Component Loader/Purpose Environment Support | Purpose Environment Support for the Component Loader]] || 0%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Effort/Binary/Component Loader/Purpose Environment Support|Purpose Environment Support for the Component Loader]] || 0%
 
|-
 
|-
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/ABI Bridge Tester | ABI Bridge Tester]] || 0%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Effort/Binary/ABI Bridge Tester|ABI Bridge Tester]] || 0%
 
|-
 
|-
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/Purpose Bridge Tester | Purpose Bridge Tester]] || 0%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Effort/Binary/Purpose Bridge Tester|Purpose Bridge Tester]] || 0%
 
|-
 
|-
 
| [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Threading Model|Threading Model]] || in progress - 75%
 
| [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Threading Model|Threading Model]] || in progress - 75%
 
|-
 
|-
| [[Uno/Cpp | C++ Uno]] || [[Uno/Effort/Cpp/Misc | Misc Improvements]] || UTF2
+
| [[Uno/Cpp|C++ Uno]] || [[Uno/Effort/Cpp/Misc|Misc Improvements]] || UTF2
 
|-
 
|-
| [[Uno/Cpp | C++ Uno]] || [[Uno/Cpp/Impl/Purpose Bridge Implementation Helper|Purpose Bridge Implementation Helper]] || UTF2
+
| [[Uno/Cpp|C++ Uno]] || [[Uno/Cpp/Impl/Purpose Bridge Implementation Helper|Purpose Bridge Implementation Helper]] || UTF2
 
|-
 
|-
| [[Uno/Java | Java Uno]] || [[Uno/Effort/Java/Threading Model | the Threading Model]] || 0%
+
| [[Uno/Java|Java Uno]] || [[Uno/Effort/Java/Threading Model|the Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Java | Java Uno]] || [[Uno/Java/Java-Urp Bridge | Java-Urp Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || 0%
+
| [[Uno/Java|Java Uno]] || [[Uno/Java/Java-Urp Bridge|Java-Urp Bridge]] - [[Uno/Spec/Purpose Environment|Purpose Environment]] Support || 0%
 
|-
 
|-
| [[Uno/CLI | CLI Uno]] || [[Uno/Effort/CLI/Threading Model|Uno Threading Model]] || 0%
+
| [[Uno/CLI|CLI Uno]] || [[Uno/Effort/CLI/Threading Model|Uno Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Remote | Remote Uno]] || [[Uno/Effort/Remote/Threading Model|Uno Threading Model]] || 0%
+
| [[Uno/Remote|Remote Uno]] || [[Uno/Effort/Remote/Threading Model|Uno Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Binary | Binary Uno]] || [[Uno/Binary/Jni-Uno Bridge | Jni-Uno Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || 0%
+
| [[Uno/Binary|Binary Uno]] || [[Uno/Binary/Jni-Uno Bridge|Jni-Uno Bridge]] - [[Uno/Spec/Purpose Environment|Purpose Environment]] Support || 0%
 
|}
 
|}
  

Revision as of 10:14, 4 September 2006

Kay Ramme, [1]

Status: in progress(UTF2)
Type: effort

The mission of the Uno threading framework 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.

Problem

Not everything should be required to be implemented thread-safe. See comments from John Ousterhout regarding multi-threading. Encapsulation of thread-affinity should be easy.

Solution

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 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.

UNO Envs.jpg

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 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 Threading Framework are going to be integrated into one of the next updates, probably mid 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

Area Title State
Binary Uno Implement Threading Model 90%, UTF2
Binary Uno Debugging Bridge 90%
Binary Uno New UNO Threading Architecture open
Binary Uno Uno-Urp Bridge - Purpose Environment Support 0%
Binary Uno Purpose Environment Support for the Component Loader 0%
Binary Uno ABI Bridge Tester 0%
Binary Uno Purpose Bridge Tester 0%
C++ Uno Threading Model in progress - 75%
C++ Uno Misc Improvements UTF2
C++ Uno Purpose Bridge Implementation Helper UTF2
Java Uno the Threading Model 0%
Java Uno Java-Urp Bridge - Purpose Environment Support 0%
CLI Uno Uno Threading Model 0%
Remote Uno Uno Threading Model 0%
Binary Uno Jni-Uno Bridge - Purpose Environment Support 0%
Personal tools