Difference between revisions of "Effort/Implement Basic Threading-Architecture"
From Apache OpenOffice Wiki
< Effort
(Added module "graphics/goodies".) |
m (→Dependencies: Fixed title layout ...) |
||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Status: in progress | + | Type: Effort Status: in progress |
− | + | The OOo [[Uno/Term/Threading-Architecture|threading-architecture]] is going to be well defined, many little changes need to be done to get implemented what is specified as the [[Spec/Threading-Architecture|threading-architecture]]. | |
− | + | ||
− | + | ==Problem== | |
− | + | The biggest problem is the size of the code base. It is hard to actually get an overview where thread related constructs are used. Typical usages are: | |
− | + | * use a mutex to protect an object, | |
− | + | * use a thread to do something in the background, | |
− | + | * use a thread to encapsulate thread affinities (e.g. in dtrans). | |
− | : | + | Some usages are more implicit: |
− | + | * post a user message into the [[VCL]] event queue, to delegate the execution of a particular operation into the "main" thread, | |
− | + | * use the "global" mutex to do some initialization, | |
− | + | * use the [[Terms/Solar Mutex|Solar Mutex]] to protect a particular object, | |
− | + | * rely on [[VCL]]:Win32 to enter the <code>getMessage</code> loop in the main thread (DDE). | |
− | + | ||
− | + | ==Solution== | |
− | + | Actually grep for thread related [[Uno]] code and change it, if needed. Change the environments of all possible components to <code>"c++:unsafe"</code>. | |
− | + | ||
− | + | ===Threads=== | |
− | : | + | * vos timer thread |
− | + | * dtrans threads (clipboard and D&D) | |
− | + | * ucbhelper: background download thread | |
− | + | * ICE thread | |
− | + | * configuration flash thread | |
− | + | * Win32: affinity thread | |
− | + | * office acceptor thread - second process thread | |
− | + | * Uno acceptor thread | |
− | + | * io - pump thread | |
− | : | + | * package manager deployment GUI thread |
− | + | * Uno job threads | |
− | + | * Printer discovery | |
− | + | ||
− | + | ===Components=== | |
− | + | ||
− | : | + | ===Libraries=== |
− | : | + | |
− | : | + | ===Applications=== |
− | : | + | |
− | : | + | ==Tasks== |
− | : | + | {|border="1" cellspacing="0" class="wikitable" |
− | : | + | |- style="background:#efefef;" |
− | : | + | ! Title !! State |
− | : | + | |- |
− | : | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://framework.openoffice.org/source/browse/framework/desktop module framework/desktop] || UTF2 |
− | : | + | |- |
− | : | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://framework.openoffice.org/source/browse/framework/sfx2 module framework/sfx2] || UTF2 |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://framework.openoffice.org/source/browse/framework/filter module framework/filter] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://graphics.openoffice.org/source/browse/graphics/goodies module graphics/goodies] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://graphics.openoffice.org/source/browse/graphics/svx module graphics/svx] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://gsl.openoffice.org/source/browse/gsl/toolkit module gsl/toolkit] || UTF2 | |
− | + | |- | |
− | : | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://l10n.openoffice.org/source/browse/l10n/i18npool module l10n/i18npool] || UTF2 |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://sw.openoffice.org/source/browse/sw/linguistic module sw/linguistic] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://sw.openoffice.org/source/browse/sw/sw module sw/sw] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://ucb.openoffice.org/source/browse/ucb/uui module ucb/uui] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/comphelper/ module util/comphelper] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/xmlhelp module util/xmlhelp] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/unotools module util/unotools] || UTF2 | |
− | + | |- | |
− | : | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/svtools module util/svtools] || UTF2 |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/extensions module util/extensions] || UTF2 | |
− | + | |- | |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://util.openoffice.org/source/browse/util/fileaccess module util/fileaccess] || UTF2 | |
− | : | + | |- |
− | + | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://xml.openoffice.org/source/browse/xml/xmloff module xml/xmloff] || UTF2 | |
+ | |- | ||
+ | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://xml.openoffice.org/source/browse/xml/package module xml/package] || UTF2 | ||
+ | |- | ||
+ | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://xml.openoffice.org/source/browse/xml/sax module xml/sax] || UTF2 | ||
+ | |- | ||
+ | | Declare be [[Uno/Term/Thread Unsafe|thread-unsafe]] [http://dba.openoffice.org/source/browse/dba/connectivity/ module dba/connectivity] || UTF2 | ||
+ | |- | ||
+ | | Make ZConnectionPool / OPoolTimer thread enter the default [[Uno/Term/Thread Unsafe|thread-unsafe]] environment before invalidating the pooled connections. || UTF2 | ||
+ | |- | ||
+ | | AsyncEventNotifier / EventNotifierImpl - Already call "getComponent" at the "IEventProcessor" during construction of the "AsyncEventNotifier" and remember the object in a "free" reference || utf2 | ||
+ | |- | ||
+ | | [[Effort/Make VCL Thread-Transparent]] || in progress | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ==Dependencies== | ||
+ | {|border="1" cellspacing="0" class="wikitable" | ||
+ | |- style="background:#efefef;" | ||
+ | ! Area !! Title !! State !! [[CWS]] | ||
+ | |- | ||
+ | | [[Uno/Cpp|C++ Uno]] || [[Uno/Effort/Binary/Extend_Threading-Model|Extended Binary Uno Threading-Model]] || style="background:lightgreen;"|ready for QA || {{Uno/CWS|SRC680|bunoexttm}} | ||
+ | |- | ||
+ | | [[VCL]] || [[Effort/Make_VCL_Thread-Transparent|Thread-Transparent VCL]] || style="background:yellow;"|in progress || {{Uno/CWS|SRC680|vclthreadtransparency1}}<br>{{Uno/CWS|SRC680|vclthreadtransparency2}} | ||
+ | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Effort]] | [[Category:Effort]] | ||
+ | [[Category:Architecture]] | ||
+ | [[Category:Multi-Threading]] |
Latest revision as of 14:07, 13 July 2007
Type: Effort Status: in progress
The OOo threading-architecture is going to be well defined, many little changes need to be done to get implemented what is specified as the threading-architecture.
Contents
Problem
The biggest problem is the size of the code base. It is hard to actually get an overview where thread related constructs are used. Typical usages are:
- use a mutex to protect an object,
- use a thread to do something in the background,
- use a thread to encapsulate thread affinities (e.g. in dtrans).
Some usages are more implicit:
- post a user message into the VCL event queue, to delegate the execution of a particular operation into the "main" thread,
- use the "global" mutex to do some initialization,
- use the Solar Mutex to protect a particular object,
- rely on VCL:Win32 to enter the
getMessage
loop in the main thread (DDE).
Solution
Actually grep for thread related Uno code and change it, if needed. Change the environments of all possible components to "c++:unsafe"
.
Threads
- vos timer thread
- dtrans threads (clipboard and D&D)
- ucbhelper: background download thread
- ICE thread
- configuration flash thread
- Win32: affinity thread
- office acceptor thread - second process thread
- Uno acceptor thread
- io - pump thread
- package manager deployment GUI thread
- Uno job threads
- Printer discovery
Components
Libraries
Applications
Tasks
Title | State |
---|---|
Declare be thread-unsafe module framework/desktop | UTF2 |
Declare be thread-unsafe module framework/sfx2 | UTF2 |
Declare be thread-unsafe module framework/filter | UTF2 |
Declare be thread-unsafe module graphics/goodies | UTF2 |
Declare be thread-unsafe module graphics/svx | UTF2 |
Declare be thread-unsafe module gsl/toolkit | UTF2 |
Declare be thread-unsafe module l10n/i18npool | UTF2 |
Declare be thread-unsafe module sw/linguistic | UTF2 |
Declare be thread-unsafe module sw/sw | UTF2 |
Declare be thread-unsafe module ucb/uui | UTF2 |
Declare be thread-unsafe module util/comphelper | UTF2 |
Declare be thread-unsafe module util/xmlhelp | UTF2 |
Declare be thread-unsafe module util/unotools | UTF2 |
Declare be thread-unsafe module util/svtools | UTF2 |
Declare be thread-unsafe module util/extensions | UTF2 |
Declare be thread-unsafe module util/fileaccess | UTF2 |
Declare be thread-unsafe module xml/xmloff | UTF2 |
Declare be thread-unsafe module xml/package | UTF2 |
Declare be thread-unsafe module xml/sax | UTF2 |
Declare be thread-unsafe module dba/connectivity | UTF2 |
Make ZConnectionPool / OPoolTimer thread enter the default thread-unsafe environment before invalidating the pooled connections. | UTF2 |
AsyncEventNotifier / EventNotifierImpl - Already call "getComponent" at the "IEventProcessor" during construction of the "AsyncEventNotifier" and remember the object in a "free" reference | utf2 |
Effort/Make VCL Thread-Transparent | in progress |
Dependencies
Area | Title | State | CWS |
---|---|---|---|
C++ Uno | Extended Binary Uno Threading-Model | ready for QA | bunoexttm |
VCL | Thread-Transparent VCL | in progress | vclthreadtransparency1 vclthreadtransparency2 |