1999
DOI: 10.1007/3-540-49099-x_7
|View full text |Cite
|
Sign up to set email alerts
|

Types for Safe Locking

Abstract: A race condition is a situation where two threads manipulate a data structure simultaneously, without synchronization. Race conditions are common errors in multithreaded programming. They often lead to unintended nondeterminism and wrong results. Moreover, they are notoriously hard to diagnose, and attempts to eliminate them can introduce deadlocks. In practice, race conditions and deadlocks are often avoided through prudent programming discipline: protecting each shared data structure with a lock and imposing… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
121
0

Year Published

1999
1999
2012
2012

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 88 publications
(121 citation statements)
references
References 22 publications
0
121
0
Order By: Relevance
“…So far, much effort has been paid for static deadlock-freedom verification [1,2,7,8,11,12,14]. However, non-block-structured lock primitives and mutable references to locks are not dealt with in a sufficient manner.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…So far, much effort has been paid for static deadlock-freedom verification [1,2,7,8,11,12,14]. However, non-block-structured lock primitives and mutable references to locks are not dealt with in a sufficient manner.…”
Section: Introductionmentioning
confidence: 99%
“…However, non-block-structured lock primitives and mutable references to locks are not dealt with in a sufficient manner. For example, the analyses by Boyapati, Lee and Rinard [2] and by Flanagan and Abadi [8] consider only block-structured synchronization primitives (i.e., synchronized blocks in the Java language.) Kobayashi et al [11,12,14] proposed a deadlock-freedom analy- …”
Section: Introductionmentioning
confidence: 99%
“…The simplest mechanism for thread-safety is to employ the per-object monitor. SafeJava [5] extends previous type systems for data race freedom [12], with ownership types where objects are encapsulated within threads or on the heap. In SafeJava, at most one thread can be active within a tree at any one time; this may be problematic for some applications.…”
Section: Memorymentioning
confidence: 99%
“…Table 5 presents a small step operational semantics. The transition rules are mostly standard [12,11,2], where each single step is atomic and task interleaving is modelled as random choices (in [R-INT]). The label on the transition ε is the effect of the transition, which may either be empty (∅) or a singleton location ({l}).…”
Section: [Update]mentioning
confidence: 99%
“…When the code releases the lock, the type system would revoke the capability on the data, just as it revokes a capability after a region is freed. Flanagan and Abadi [13] have investigated this idea in the context of a high-level lexically-scoped language. Just as we compiled Tofte and Talpin's high-level region language into the Capability Calculus, we conjecture we could compile Flanagan and Abadi's locking language into a variant of the Capability Calculus with locking primitives instead of allocation primitives.…”
Section: Language Extensionsmentioning
confidence: 99%