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

From Apache OpenOffice Wiki
< Uno
Jump to: navigation, search
(Moved out tester stuff.)
(Added Runtime Column)
Line 17: Line 17:
 
The following specifications and features give an overview over the UNO Threading Framework. The specifications roughly depend on each other in the order listed. For example, the Threading Models specification depends on the Implementation Environments, all pieces basically creating a stack.
 
The following specifications and features give an overview over the UNO Threading Framework. The specifications roughly depend on each other in the order listed. For example, the Threading Models specification depends on the Implementation Environments, all pieces basically creating a stack.
  
Tasks:
+
; Dependencies:
 
+
 
+
 
{|border="1" cellspacing="0" class="wikitable"
 
{|border="1" cellspacing="0" class="wikitable"
|+  Efforts
 
 
|- style="background:#efefef;"  
 
|- style="background:#efefef;"  
| Task || State
+
| Area || Task || State
 
|-
 
|-
| [[Uno/Effort/Spec/Threading Model|Specify]] the Uno Threading Model || 90%
+
| [[Uno]] || [[Uno/Effort/Spec/Threading Model|Specify]] the Threading Model || 90%
 
|-
 
|-
| [[Uno/Effort/Binary/Threading Model|Uno Threading Model]] for Binary UNO. || 90%
+
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/Threading Model| the Threading Model]] || 90%
 
|-
 
|-
| [[Uno/Effort/Binary/Debug Bridge|Debugging Bridge]] for Binary UNO. || 90%
+
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/Debug Bridge | Debugging Bridge]] || 90%
 
|-
 
|-
| [[Uno/Effort/Cpp/Threading Model|Uno Threading Model]] for C++ UNO. || 75%
+
| [[Uno/Cpp | C++ Uno]] || [[Uno/Effort/Cpp/Threading Model| the Threading Model]] || 75%
 
|-
 
|-
| [[Uno/Effort/Java/Threading Model|Uno Threading Model]] for Java UNO. || 0%
+
| [[Uno/Java | Java Uno]] || [[Uno/Effort/Java/Threading Model | the Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Effort/CLI/Threading Model|Uno Threading Model]] for CLI UNO. || 0%
+
| [[Uno/CLI | CLI Uno]] || [[Uno/Effort/CLI/Threading Model|Uno Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Effort/Remote/Threading Model|Uno Threading Model]] for Remote UNO. || 0%
+
| [[Uno/Remote | Remote Uno]] || [[Uno/Effort/Remote/Threading Model|Uno Threading Model]] || 0%
 
|-
 
|-
| [[Uno/Cpp/Impl/Cpp-Uno Bridge | Cpp-Uno Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || UTF2
+
| [[Uno/Cpp | C++ Uno]] || [[Uno/Cpp/Impl/Cpp-Uno Bridge | Cpp-Uno Bridge]] - [[Uno/Spec/Purpose Environment | Purpose Environment]] Support || UTF2
 
|-
 
|-
| [[Uno/Effort/Cpp/Misc | C++ Misc Improvements]] || UTF2
+
| [[Uno/Cpp | C++ Uno]] || [[Uno/Effort/Cpp/Misc | Misc Improvements]] || UTF2
 
|-
 
|-
| [[Uno/Effort/Cpp/Purpose Bridge Implementation Helper | C++ Purpose Bridge Implementation Helper]] || UTF2
+
| [[Uno/Cpp | C++ Uno]] || [[Uno/Effort/Cpp/Purpose Bridge Implementation Helper | Purpose Bridge Implementation Helper]] || UTF2
 
|-
 
|-
| [[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%
 
|-
 
|-
| [[Uno/Effort/Binary/ABI Bridge Tester | Binary UNO ABI Bridge Tester]] || 0%
+
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/ABI Bridge Tester | ABI Bridge Tester]] || 0%
 
|-
 
|-
| [[Uno/Effort/Binary/Purpose Bridge Tester | Binary UNO Purpose Bridge Tester]] || 0%
+
| [[Uno/Binary | Binary Uno]] || [[Uno/Effort/Binary/Purpose Bridge Tester | Purpose Bridge Tester]] || 0%
 
|-
 
|-
| [[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/Effort/Binary/Component Loader/Purpose Environment Support | Purpose Environment Support for the Binary UNO 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/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%
 
|}
 
|}
  

Revision as of 09:20, 21 April 2006

Creating the UNO Threading Framework

[1], [2]

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.

UNO Envs.jpg

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.

The following specifications and features give an overview over the UNO Threading Framework. The specifications roughly depend on each other in the order listed. For example, the Threading Models specification depends on the Implementation Environments, all pieces basically creating a stack.

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.

Personal tools