POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebraic reconstruction of types and effects
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Automated Analysis of Concurrent Systems with the Constrained Expression Toolset
IEEE Transactions on Software Engineering
Higher-order concurrent programs with finite communication topology (extended abstract)
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Implementation of the typed call-by-value λ-calculus using a stack of regions
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analyzing the communication topology of concurrent programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Annotated type and effect systems
ACM Computing Surveys (CSUR)
Region-based memory management
Information and Computation
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Detecting data races in Cilk programs that use locks
Proceedings of the tenth annual ACM symposium on Parallel algorithms and architectures
The Java Language Specification
The Java Language Specification
Evaluating Deadlock Detection Methods for Concurrent Software
IEEE Transactions on Software Engineering
A Type-Theoretic Approach to Deadlock-Freedom of Asynchronous Systems
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
Detecting Deadlocks in Concurrent Systems
CONCUR '98 Proceedings of the 9th International Conference on Concurrency Theory
A Partially Deadlock-free Typed Process Calculus
LICS '97 Proceedings of the 12th Annual IEEE Symposium on Logic in Computer Science
Data Flow Analysis for Verifying Properties of Concurrent Programs
Data Flow Analysis for Verifying Properties of Concurrent Programs
Experimental Design for Comparing Static Concurrency Analysis
Experimental Design for Comparing Static Concurrency Analysis
Type and behaviour reconstruction for higher-order concurrent programs
Journal of Functional Programming
Thread-Modular Verification for Shared-Memory Programs
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
CONCUR '99 Proceedings of the 10th International Conference on Concurrency Theory
Directions in Functional Programming for Real(-Time) Applications
EMSOFT '01 Proceedings of the First International Workshop on Embedded Software
A Behavioral Module System for the Pi-Calculus
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Analysis of Multithreaded Programs
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Evolving real-time systems using hierarchical scheduling and concurrency analysis
RTSS '03 Proceedings of the 24th IEEE International Real-Time Systems Symposium
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
A Deadlock-Free Semantics for Shared Memory Concurrency
ICTAC '09 Proceedings of the 6th International Colloquium on Theoretical Aspects of Computing
A Certified Data Race Analysis for a Java-like Language
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Composable specifications for structured shared-memory communication
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
LOCKSMITH: Practical static race detection for C
ACM Transactions on Programming Languages and Systems (TOPLAS)
A type and effect system for deadlock avoidance in low-level languages
Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation
Dynamic deadlock avoidance in systems code using statically inferred effects
PLOS '11 Proceedings of the 6th Workshop on Programming Languages and Operating Systems
Existential label flow inference via CFL reachability
SAS'06 Proceedings of the 13th international conference on Static Analysis
A path sensitive type system for resource usage verification of c like languages
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Static lock capabilities for deadlock freedom
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Internal and external token-based synchronization in object-oriented languages
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Advances in the design and implementation of group communication middleware
Dependable Systems
A type and effect system for determinism in multithreaded programs
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Abstract Interpretation Against Races
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P 2003)
Types for Active Objects with Static Deadlock Prevention
Fundamenta Informaticae
Uniqueness and reference immutability for safe parallelism
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Structural lock correlation with ownership types
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Rely-guarantee references for refinement types over aliased mutable data
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
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 a partial order on lock acquisitions. In this paper we show that this discipline can be captured (if not completely, to a significant extent) through a set of static rules. We present these rules as a type system for a concurrent, imperative language. Although weaker than a full-blown program-verification calculus, the type system is effective and easy to apply. We emphasize a core, first-order type system focused on race conditions; we also consider extensions with polymorphism, existential types, and a partial order on lock types.