26 citations found. Retrieving documents...
Andrew D. Birrell. An introduction to programming with threads. Technical Report SRC-35, DEC Systems Research Center, January 1989.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Scheduling and Resource Management Techniques for Multiprocessors - Black (1990)   (25 citations)  (Correct)

....concurrency models introduce additional concurrency only at the system level. This class of model is used by most multithreading packages such as parallel language runtime systems including the Mach Cthreads library[12] and the Topaz system developed at Digital Equipment s System Research Center [4]. Finally, the relatively new class of dual concurrency models introduces concurrency at both the system and user levels. One example of this is the Portable Common Runtime for Cedar developed at Xerox PARC[54] The Unix implementation of this runtime limits the number of active virtual processors ....

Andrew D. Birrell. An Introduction to Programming with Threads. Technical Report 35, Digital Equipment Corporation, Systems Research Center, Palo Alto, CA, 1989.


Cooperative Task Management without Manual Stack.. - Adya, Howell.. (2002)   (19 citations)  (Correct)

....task management is harder than serial in that, if the task has local state that depends on the global state before yielding, that state may be invalid when the task resumes. The same problem appears in preemptive task management when releasing locks for the duration of a slow I O operation [Bir89]. One penalty for adopting cooperative task management is that every I O library function called must be wrapped so that instead of blocking, the function initiates the I O and yields control to another task. The wrapper must also arrange for its task to become schedulable when the I O ....

....interruption, we know that the set of resources we have pinned in memory are related in the way we expect, because the final pass through the loop executed atomically. 6 Related Work Birrell offers a good overview of the conventional thread ed programming model with preemptive task management [Bir89]. Of his reasons for using concurrency (p. 2) cooperative task management can help with all but exploiting multiprocessors, a shortcoming we mention in Section 2.1. Birrell advises that you must be fastidious about associating each piece of data with one (and only one) mutex (p. 28) consider ....

Andrew D. Birrell. An introduction to programming with threads. Technical Report 35, Digital Systems Research Center, January 1989.


Finding Stale-Value Errors in Concurrent Programs - Burrows, Leino (2002)   (5 citations)  (Correct)

....from the second critical section . For our third example, we consider the case where lock acquisitions and releases are hidden in procedure calls. Some procedures may for example first acquire a lock and then release it, while others, such as the wait( operation on condition variables (see e.g. [9, 2]) first release a lock and then re acquire it. Here is the code the for consume operation in a producer consumer application (see, e.g. 2] which uses wait( to temporarily exit the critical section to yield to producers: a : arr ; while (n = 0) wait( v : a[nextc] nextc : ....

....Some procedures may for example first acquire a lock and then release it, while others, such as the wait( operation on condition variables (see e.g. 9, 2] first release a lock and then re acquire it. Here is the code the for consume operation in a producer consumer application (see, e.g. [2]) which uses wait( to temporarily exit the critical section to yield to producers: a : arr ; while (n = 0) wait( v : a[nextc] nextc : nextc 1) mod a.length; n : n 1; In this example, n , arr , and nextc are shared variables, denoting the number of elements produced but ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, January 1989.


Synchronized Lazy Aggregates - Turbak (1993)   (Correct)

....computations (e.g. Waters s series compiler [Wat90] handles only iterative computations; deforestation techniques [Wad88] disallow fan out) In the channel approach, devices are wired together by some sort of explicit communication channel. This approach encompasses communicating threads (e.g. [Bir89], CSP [Hoa85] ML threads [CM90] producer consumer coroutines (e.g. Unix pipes [KP84] CLU iterators [L 79] Id s I structures [ANP89] and M structures [Bar92] and dataflow techniques (e.g. Den75] WA85] Many channel techniques disallow fan out, recursion, nesting, or the ....

....to a synchron are classified into two types: waiting and non waiting. When a process wishes to rendezvous at a synchron, it enters a waiting 5 Due to atomicity problems introduced by concurrency, a base language with imperative features also needs to support a traditional locking mechanism [Bir89], but we won t focus on this point. 5 state that refers to the synchron with a distinguished waiting pointer. For all other manipulations, a process holds a synchron with a nonwaiting pointer. The synchronization condition is this: a rendezvous occurs at a synchron only when all of the pointers ....

[Article contains additional citation context not shown here]

Andrew Birrel. An introduction to programming with threads. SRC Report 35, Digital Equipment Corporation, January 1989.


Performance Limitations of the Java Core Libraries - Heydon, Najork (2000)   (18 citations)  (Correct)

....functional enhancements have increased Mercator s computational burden, so we believe the before and after performance comparisons we draw in this paper are conservative. 4 Excessive Synchronization Writing correct multi threaded programs is far from trivial; it requires training and discipline [4]. Most programmers have not been exposed to programming with threads, and therefore lack the needed experience. Presumably for this reason, the designers of the Java core libraries decided to minimize the likelihood of race conditions by making many of the core classes thread safe. This was done ....

Andrew D. Birrell. An Introduction to Programming with Threads. SRC Research Report 35, Digital Equipment Corporation, Systems Research Center, January 1989.


First-Class Synchronization Barriers - Turbak (1996)   (1 citation)  (Correct)

....to guarantee that each observes the same final balance after crossing the barrier. Even in a functional language, barriers are helpful for limiting the amount of memory used by a program. Barriers serve a purpose di#erent from that of mutual exclusion mechanisms like semaphores [Dij68] locks [Bir89] and monitors [Hoa74] Whereas mutual exclusion mechanisms prevent threads from simultaneously accessing resources, barriers manage resources (e.g. shared variables and memory) by limiting the extent to which threads can be out of step . Although mutual exclusion mechanisms have been ....

Andrew Birrel. An introduction to programming with threads. SRC Report 35, Digital Equipment Corporation, January 1989.


An Efficient Meta-lock for Implementing Ubiquitous.. - Agesen, Detlefs.. (1999)   (20 citations)  (Correct)

....differ from the original: any object may be used as a monitor, monitors may be entered recursively, and monitors provide a single implicit, rather than possibly several explicit, condition variables. Birrell gives an excellent tutorial on programming with standard synchronization primitives [5]. As we have discussed, the synchronization primitives of the Java platform are difficult to implement in a manner that is both time and space efficient. Scalability to multiprocessor systems is another important concern. We shall now discuss some previous implementations focusing on the approach ....

Andrew Birrell. An Introduction to Programming with Threads. Digital Systems Research Center report no. 35, 1989.


Type-Based Race Detection for Java - Flanagan, Freund (2000)   (65 citations)  (Correct)

....without synchronization. Race conditions often result in unexpected program behavior, such as program crashes or incorrect results. They can be avoided by careful programming discipline: protecting each data structure with a lock and acquiring that lock before manipulating the data structure [Bir89] Since a lock can be held by at most one thread at any time, careful adherence to this lock based synchronization discipline ensures a race free program. Current programming tools provide little support for this synchronization discipline. It is easy to write a # This work was completed while ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, 1989.


Object Types against Races - Flanagan, Abadi (1999)   (21 citations)  (Correct)

....(that is, two processes accessing a shared resource simultaneously) and ultimately to incorrect behavior. A standard approach for eliminating race conditions consists in protecting each shared resource with a lock, requiring that a process acquires the corresponding lock before using the resource [5]. Object oriented programs often rely on this approach, but with some peculiar patterns. It is common to group related resources into an object, and to attach the lock that protects the resources to this object. Processes may acquire the lock before invoking the methods of the object; ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, 1989.


A Parallel and Multithreaded ERLANG Implementation - Hedqvist (1998)   (Correct)

....bus 2. ccNUMA cache coherent Non Uniform Memory Architecture 3. Non Uniform Memory Architecture Parallel Computers and Programming 12 A parallel and multi threaded ERLANG implementation 4. 3 Threads Using multiple threads of execution to express concurrency and parallelism is not new [17]. ERLANG has an internal scheduling mechanism that gives at least the same light weightiness as a thread library, but the ERLANG language makes it impossible to destroy or disturb other ERLANG processes. Threads are traditionally programmed in C or C without any protection between different ....

Andrew D. Birrel, "An Introduction to Programming with Threads", Digital System Research Center, 1989.


A Parallel Object-Oriented System for Realizing Reusable and.. - Lim (1993)   (7 citations)  (Correct)

....by several parallel constructs. We are not aware of any parallel language that supports a shared address model for both sharedmemory and distributed memory multiprocessors, and makes NUMA an integral part of the language design. In addition to the usual control parallel constructs (e.g. threads [35]) pSather also supports a form of data parallelism [131] Section 2.6) which is usable for both irregular, dynamic data structures (e.g. trees) and the regular arrays. It decouples the execution model from the execution mode of single instruction multiple data (SIMD) machines. The semantics of ....

Andrew D. Birrell. An Introduction to Programming with Threads. Technical Report SRC Research Report 35, DEC Systems Research Center, 130 Lytton Avenue, Palo Alto, California 94301, January 1989.


Object Types against Races - Flanagan, Abadi (1999)   (21 citations)  (Correct)

....(that is, two processes accessing a shared resource simultaneously) and ultimately to incorrect behavior. A standard approach for eliminating race conditions consists in protecting each shared resource with a lock, requiring that a process acquires the corresponding lock before using the resource [5]. Object oriented programs often rely on this approach, but with some peculiar patterns. It is common to group related resources into an object, and to attach the lock that protects the resources to this object. Processes may acquire the lock before invoking the methods of the object; ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, 1989.


Alguns elementos sobre Programação Concorrente.. - Baquero (1993)   (Correct)

.... implementac oes 2 World Wide Web 3 Light Weight Processes 2 disponibilizavam controlo sobre o escalonamento com v arios n iveis de prioridade , sincronizac ao por semantica de rendezvous associada ao envio e recepc ao de mensagens ou por monitores com vari aveis de condic ao [5]. E tamb em suportada a redefinic ao das notificac oes de acontecimentos ass incronos pelo n ucleo por encontros s incronos com processos leves. Com a vers ao Solaris SunOS 5.0 [27] o conceito de LWP e alterado, sendo criada uma arquitectura mista, onde s ao disponibilizados processos leves ....

Andrew D. Birrell. An introduction to programming with threads. Technical report, Digital, Systems Research Center, 130 Lytton Avenue, Palo Alto, California 94301, January 1989.


Implementing Concurrency For An ML-based Operating System - Lin   (4 citations)  (Correct)

....and the syntactic constructs used to express and control these computations. Over the years, people have used a number of different approaches to implementing concurrency or multitasking in computer systems. Some of the various concurrency mechanisms include threads and multi processing. Threads[5] are independent pieces of program execution sharing the same address space within a machine. Multi processing is the practice of using multiple physical processors to do computations in parallel. There has been extensive research into different methods of task switching and thread management as ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, Palo Alto, California, 1989.


First-Class Synchronization Barriers - Turbak (1996)   (1 citation)  (Correct)

....to guarantee that each observes the same final balance after crossing the barrier. Even in a functional language, barriers are helpful for limiting the amount of memory used by a program. Barriers serve a purpose different from that of mutual exclusion mechanisms like semaphores [Dij68] locks [Bir89] and monitors [Hoa74] Whereas mutual exclusion mechanisms prevent threads from simultaneously accessing resources, barriers manage resources (e.g. shared variables and memory) by limiting the extent to which threads can be out of step . Although mutual exclusion mechanisms have been ....

Andrew Birrel. An introduction to programming with threads. SRC Report 35, Digital Equipment Corporation, January 1989.


Using Abstraction in Explicitly Parallel Programs - Yelick (1990)   (Correct)

....another thread; it is only programming convention that prevents this from happening. A safer locking abstraction could be defined [BGHL87] or, alternatively, programming language restrictions could enforce the programming convention that locks are always released by the thread that acquired them [Bir89] The locks in our programs are implemented using spinlocks : the acquire operation repeatedly calls test set until it successfully sets the spinlock and the release procedure calls reset . Our implementation is not fair, in the sense that one thread may be starved if other threads acquire and ....

Andrew D. Birrell. An introduction to programming with threads. Technical Report 35, Digital Equipment Corporation Systems Research Center, Palo Alto, CA, 1989.


Thread Optimizations in Concurrent Object Oriented Languages - Wang (1998)   (1 citation)  (Correct)

.... dynamically, then a thread will be created for each independent unit of work (task) When a thread needs to wait for a result from a slow device like the network, printer, file system, or a critical resource which uses a lock to block requests, another thread can be chosen to do other useful work [4]. This computation format can reduce the latency of a blocking function and improve the CPU performance. 27 KanThreads are introduced to perform asynchronous methods. They are used to support a fine grained programming style, which means that for each asynchronous method, the Kan runtime system ....

Andrew D. Birrell. An Introduction to Programming with Threads, 6 1989.


Lottery and Stride Scheduling: Flexible Proportional-Share.. - Waldspurger (1995)   (85 citations)  (Correct)

.... to exhibit locality, one possible optimization is to associate a small, fixed size cache of scheduling state with each client (or alternatively, with each lock) The same basic technique used for locks can also be applied to other synchronization resources, such as condition variables [LR80, Bir89, HJT 93] In the case of a condition variable, a currency is associated with the condition, and clients that are blocked waiting on the condition fund the condition currency. Unlike a lock, which has a single owner, there may be several clients capable of signalling the condition. Any number ....

Andrew D. Birrell. An introduction to programming with threads. SRC Research Report #35, DEC Systems Research Center, Palo Alto, California, January 1989.


GLUnix: a Global Layer Unix for a Network of Workstations - Ghormley (1997)   (48 citations)  (Correct)

....a multi threaded or event driven programming model for individualGLUnix components. Multi threaded designs have two primary advantages over event driven programming: increased concurrency with the potential for improved performance, and the relative simplicity of dealing with blocking operations [9, 32]. Maintaining performance in a distributed system with event driven programming requires that network message handlers use only non blocking communication operations, treating reply messages as separate events. Event driven architectures, however, are simpler to design and debug, since they avoid ....

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, Palo Alto, CA, January 1989.


Interface Manual - Generated On   (Correct)

....interface can be used directly to provide concurrency control for threads. It can be convenient to use other facilities built on top of events. The SRCThread interface provides the mutual exclusion locks and condition variables of Modula 2 [Rovner 85] There is anan introduction to their use in [Birrell 91a] See [Birrell 91b] for a formal specification; the specifications in this interface are lifted from [SRC M3 ] the SRC Modula 3 system. SRCThread : LOCAL INTERFACE = NEEDS Event; NEEDS Thread; BEGIN 7.3.1 Mutexes A Mutex is locked by some thread, or unlocked. A newly allocated Mutex is ....

Andrew D. Birrell. An introduction to programming with threads. In Nelson [Nelson 91], chapter 4, pages 88--118. (p 45)


Ariadne: Architecture of a Portable Threads system.. - Mascarenhas, Rego (1996)   (23 citations)  (Correct)

....costs between threads can be made a fraction of context switching costs between processes. Many threads may coexist in a process s address space, allowing for cheap and efficient multithreading. Because threads may execute concurrently, however, programming with threads requires care [2]. For example, because a thread is free to access any virtual address, it can access and (inadvertently) destroy the stack of any other thread [3] Ariadne is a threads library that provides light weight threads in multiprocessor Unix environments. A single process may host thousands of threads, ....

A. S. Birell, `An introduction to programming with threads', Technical Report 35, DEC Systems Research Center, January 1989.


Tools and Techniques for Building Fast Portable Threads Packages - Keppel (1993)   (71 citations)  (Correct)

....explicitly; and threads can run concurrently, where coroutines use strict interleaving. A preemptive scheduling policy can suspend threads at arbitrary times; threads need not not explicilty invoke blocking constructs. Most threads packages provide various additional constructs for synchronization [Bir89]. Continuations are closures that implement general purpose control constructs. Although continuations can implement threads, 9 threads do not necessarily rely on language and compiler support. Also, threads are typically optimized to the special case of context switch, where continuations are ....

Andrew D. Birrell. An Introduction to Programming with Threads. Digital Equipment Corporation, 1989.


The Fluke Device Driver Framework - Van Maren (1999)   (1 citation)  (Correct)

No context found.

Andrew D. Birrell. An introduction to programming with threads. Technical Report SRC-35, DEC Systems Research Center, January 1989.


Efficient, Protected Extension of Commodity Operating Systems - Ghormley (1998)   (Correct)

No context found.

Andrew D. Birrell. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center, Palo Alto, CA, January 1989.


Ariadne: Architecture of a Portable Threads system supporting.. - Mascarenhas (1996)   (23 citations)  (Correct)

No context found.

A. S. Birell, `An introduction to programming with threads', Technical Report 35, DEC Systems Research Center, January 1989.


PolyScheme: a Semantics for a Concurrent Scheme - Queinnec (1990)   (Correct)

No context found.

Andrew D. Birell, An Introduction to Programming with Threads, DEC SRC Report 35, January 6, 1989.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC