File: intro.tex

package info (click to toggle)
spooles 2.2-9
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 19,012 kB
  • sloc: ansic: 146,834; csh: 3,615; makefile: 2,040; perl: 74
file content (32 lines) | stat: -rw-r--r-- 1,465 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
\par
\chapter{{\tt Lock}: Mutual Exclusion Lock object}
\label{chapter:Lock}
\par
The {\tt Lock} object is an object that is used to insulate the
rest of the library from the particular thread package that is
active.
The {\tt FrontMtx}, {\tt ChvList}, {\tt ChvManager},
{\tt SubMtxList} and {\tt SubMtxManager} objects all
may contain a mutual exclusion lock to govern access to their
critical sections of code in a multithreaded environment.
Instead of putting the raw code that is specific to a particular
thread library into each of these objects, 
each has a {\tt Lock} object.
It is this {\tt Lock} object that contains the code and data
structures for the different thread libraries.
\par
At present we have the Solaris and POSIX thread libraries supported
by the {\tt Lock} object.
The header file {\tt Lock.h} contains {\tt \#if/\#endif} statements
that switch over the supported libraries.
The {\tt THREAD\_TYPE} parameter is used to make the switch.
Porting the library to another thread package requires making
changes to the {\tt Lock} object.
The parallel factor and solve methods that belong to the 
{\tt FrontMtx} object also need to have additional code inserted into
them to govern thread creation, joining, etc, but the switch is
made by the {\tt THREAD\_TYPE} definition found in the header file
{\tt Lock.h}.
It is possible to use the code without any thread package ---
simply set {\tt THREAD\_TYPE} to {\tt TT\_NONE} in the {\tt Lock.h}
file.