ThesaHelp: references a-b
Topic: process threads
Topic: managing shared memory
Topic: critical regions
Topic: concurrency control by monitors
Topic: waitfor condition in parallel processing
Topic: interrupts
Topic: non-preemptive task scheduling
Topic: program proof via assertions
Topic: high priority processes
Topic: deadlocks
Topic: relational database
Topic: database queries, joins, and relational algebra
Topic: asynchronous processing
Topic: multiple processors
Topic: interprocess communication
Topic: decomposition of a system into levels
Group: digital communication
Topic: data caching
Topic: timestamps
Topic: function library
Topic: shared objects
Group: debugging
| |
Reference
Birrell, A.D.,
"An introduction to programming with threads", pp. 88-118, in Nelson, G. (ed.),
Systems Programming in Modula-3, Englewood Cliffs, New Jersey, Prentice Hall, 1991.
Google
Notes
boldface used for literals.
Quotations
90 ;;Quote: use threads for ten processors, slow devices, user-invoked actions, client requests to a server, deferred work
| 92 ;;Quote: a mutex or critical section is the simplest primitive for accessing shared variables; lock a mutex, use shared variables, unlock the mutex and release a blocked thread
| 93 ;;Quote: a monitor consists of shared data, a mutex, and zero or more condition variables
| 93+;;Quote: the Wait operation unlocks a mutex and blocks on a condition variable; use Signal and Broadcast to unblock
| 93+;;Quote: use condition variables when one-at-a-time mutual exclusion (i.e., mutex) is not sufficient
| 94 ;;Quote: AlertWait waits on a mutex and condition variable until a signal or explicit alert; an alert raises an exception
| 94+;;Quote: use TestAlert during long-running computations to allow thread interruption
| 97 ;;Quote: a mutex protects the invariant of the associated data; restore the invariant before calling Wait or Signal
| 98 ;;Quote: avoid deadlocks by applying a partial order to the acquisition of mutexes; condition variables may still cause deadlocks
| 101 ;;Quote: protect all condition variables with a boolean expression; guarantees that the expression is true despite an inconsistent Signal or Broadcast
| 101+;;Quote: Modula-3's condition variables are simpler than Hoare's original design for monitors
| 109 ;;Quote: use multiple threads in place of asynchronous operations with interrupts or Unix signals
| 111 ;;Quote: a pipeline is a chain of producer-consumer threads; if evenly balanced, it makes effective use of multiple processors
| 113 ;;Quote: avoid having many more runnable threads than processors unless the threads are blocked on condition variables
| 115 ;;Quote: use up-calls to transfer incoming network data, user input, or status changes to higher level processes; avoids context switches; used for high-performance networks
| 116 ;;Quote: use version stamps for cached data shared by multiple threads; raise an exception if the version stamp does not match
| 117 ;;Quote: use a work crew, i.e., a fixed pool of threads, to efficiently process many queued requests
| 117 ;;Quote: always design a library interface for multiple threads; re-entrant (perhaps by mutex), no results in shared global variables, no asynchronous returns
| 118 ;;Quote: always protect shared data with a mutex and boolean wait expressions
| 118 ;;Quote: deadlocks are easy to detect; use a debugger to look at relevant threads, especially those tied to a mutex or condition variable
|
Related Topics
ThesaHelp: references a-b (396 items)
Topic: process threads (25 items)
Topic: managing shared memory (74 items)
Topic: critical regions (58 items)
Topic: concurrency control by monitors (24 items)
Topic: waitfor condition in parallel processing (20 items)
Topic: interrupts (25 items)
Topic: non-preemptive task scheduling (16 items)
Topic: program proof via assertions (61 items)
Topic: high priority processes (13 items)
Topic: deadlocks (21 items)
Topic: relational database (34 items)
Topic: database queries, joins, and relational algebra (33 items)
Topic: asynchronous processing (30 items)
Topic: multiple processors (10 items)
Topic: interprocess communication (29 items)
Topic: decomposition of a system into levels (49 items)
Group: digital communication (11 topics, 295 quotes)
Topic: data caching (28 items)
Topic: timestamps (19 items)
Topic: function library (50 items)
Topic: shared objects (13 items)
Group: debugging (10 topics, 325 quotes)
|