home *** CD-ROM | disk | FTP | other *** search
- Submitted-by: mueller@delta.cs.fsu.edu (Frank Mueller)
-
- ``A Library Implementation of POSIX Threads under UNIX''
-
- The PART (POSIX / Ada-Runtime Project) is happy to announce that we
- will be able to make the sources of a C Pthreads library available for
- non-commercial use.
-
- ftp-site: ftp.cs.fsu.edu
- directory: /pub/PART
- files: pthreads.tar.Z, pthreads_serf92.ps.Z
-
- As part of the PART project we have been designing and implementing a
- library package of preemptive threads which is compliant with POSIX
- 1003.4a Draft 6. Our implementation is limited to the Sun SPARC
- architecture and SunOS 4.1 or later. We do not make any use of Sun's
- light-weight processes to achieve better performance (with one
- I/O-related exception).
-
- The following features are included in the current implementation:
- -from POSIX.4a:
- .thread management: initializing, creating, joining, exiting, and
- destroying threads
- .synchronization: mutual exclusion, condition variables
- .thread-specific data
- .thread priority scheduling: priority management, preemptive
- priority scheduling (FIFO)
- .signals: signal handlers, asynchronous wait, masking of signals,
- long jumps
- .cancellation: cleanup handlers, asynchronous, synchronous, and
- disabled interruptability.
- -from POSIX.4:
- .timers: sleep, nanosleep, read clock
- -from POSIX.1:
- .synchronous I/O for threads (I/O only blocks current thread, not process)
-
- The support is currently being extended to include:
- -from POSIX.4a:
- .round-robin scheduling
- .mutex priority inheritance and ceilings
- .reentrant functions
- .process control: fork, wait, waitpid
- (The above funtions are not supported for threads. Their semantics
- is whatever UNIX semantics for processes is. Consequently, a fork
- will fork another process with ALL threads being duplicated, not
- just the executing thread as required by POSIX.4a.
- The functions exec and _exit behave as required without any
- change, i.e. the UNIX process level semantics for these functions
- is also adequate for threads.)
- -from POSIX.4:
- .asynchronous I/O for threads
- .timers
-
- The current scheduling is strict priority scheduling (according to
- POSIX.4a FIFO scheduling) which preempts when signals are caught.
- Besides asynchronous delivery of signals, context switches only occur
- where required by the priority policy, e.g. when resources (mutexes)
- are locked etc. We are currently working on incorporating an
- alternative, time-slicing round-robin scheduling algorithm.
-
- The current implementation has been tested and used as a base to
- implement the runtime-system for an Ada compiler (Verdix). But we do
- not make any claims about the completeness or correctness of this
- implementation.
-
- (C)OPYRIGHT NOTICE:
- General permission to copy and distribute this code and to execute it
- within a computer, without fee, is granted provided that this is not
- done for commercial advantage, and that this copyright notice is
- included. All other rights are reserved.
-
- Please let us know if you have any questions or suggestions.
-
- Frank Mueller
- mueller@alpha.cs.fsu.edu
-
- [ Note crossposting and followup-to:, please -- mod ]
-
- Volume-Number: Volume 29, Number 42
-
-