1,444 research outputs found
A Type System for Unstructured Locking that Guarantees Deadlock Freedom without Imposing a Lock Ordering
Deadlocks occur in concurrent programs as a consequence of cyclic resource
acquisition between threads. In this paper we present a novel type system that
guarantees deadlock freedom for a language with references, unstructured
locking primitives, and locks which are implicitly associated with references.
The proposed type system does not impose a strict lock acquisition order and
thus increases programming language expressiveness.Comment: In Proceedings PLACES 2010, arXiv:1110.385
Efficient and Reasonable Object-Oriented Concurrency
Making threaded programs safe and easy to reason about is one of the chief
difficulties in modern programming. This work provides an efficient execution
model for SCOOP, a concurrency approach that provides not only data race
freedom but also pre/postcondition reasoning guarantees between threads. The
extensions we propose influence both the underlying semantics to increase the
amount of concurrent execution that is possible, exclude certain classes of
deadlocks, and enable greater performance. These extensions are used as the
basis an efficient runtime and optimization pass that improve performance 15x
over a baseline implementation. This new implementation of SCOOP is also 2x
faster than other well-known safe concurrent languages. The measurements are
based on both coordination-intensive and data-manipulation-intensive benchmarks
designed to offer a mixture of workloads.Comment: Proceedings of the 10th Joint Meeting of the European Software
Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of
Software Engineering (ESEC/FSE '15). ACM, 201
EXPRESSing Session Types
To celebrate the 30th edition of EXPRESS and the 20th edition of SOS we
overview how session types can be expressed in a type theory for the standard
-calculus by means of a suitable encoding. The encoding allows one to
reuse results about the -calculus in the context of session-based
communications, thus deepening the understanding of sessions and reducing
redundancies in their theoretical foundations. Perhaps surprisingly, the
encoding has practical implications as well, by enabling refined forms of
deadlock analysis as well as allowing session type inference by means of a
conventional type inference algorithm.Comment: In Proceedings EXPRESS/SOS2023, arXiv:2309.0578
Data-centric concurrency control on the java programming language
Dissertação para obtenção do Grau de Mestre em
Engenharia InformáticaThe multi-core paradigm has propelled shared-memory concurrent programming to an important role in software development. Its use is however limited by the constructs
that provide a layer of abstraction for synchronizing access to shared resources. Reasoning with these constructs is not trivial due to their concurrent nature. Data-races and deadlocks occur in concurrent programs, encumbering the programmer and further reducing his productivity.
Even though the constructs should be as unobtrusive and intuitive as possible, performance must also be kept high compared to legacy lock-based mechanism. Failure to
guarantee similar performance will hinder a system from adoption.
Recent research attempts to address these issues. However, the current state of the
art in concurrency control mechanisms is mostly code-centric and not intuitive. Its codecentric nature requires the specification of the zones in the code that require synchronization,contributing to the decentralization of concurrency bugs and error-proneness of the programmer. On the other hand, the only data-centric approach, AJ [VTD06], exposes excessive detail to the programmer and fails to provide complete deadlock-freedom.
Given this state of the art, our proposal intends to provide the programmer a set
of unobtrusive data-centric constructs. These will guarantee desirable security properties:
composability, atomicity, and deadlock-freedom in all scenarios. For that purpose,
a lower level mechanism (ResourceGroups) will be used. The model proposed resides on
the known concept of atomic variables, the basis for our concurrency control mechanism.
To infer the efficiency of our work, it is compared to Java synchronized blocks, transactional memory and AJ, where our system demonstrates a competitive performance and an equivalent level of expressivity.RepComp project(PTDC/EIA-EIA/108963/2008
What is a ‘Good’ Encoding of Guarded Choice?
The pi-calculus with synchronous output and mixed-guarded choices is strictly more expressive than the pi-calculus with asynchronous output and no choice. This result was recently proved by Palamidessi and, as a corollary, she showed that there is no fully compositional encoding from the former into the latter that preserves divergence-freedom and symmetries. This paper argues that there are nevertheless `good' encodings between these calculi. In detail, we present a series of encodings for languages with (1) input-guarded choice, (2) both input- and output-guarded choice, and (3) mixed-guarded choice, and investigate them with respect to compositionality and divergence-freedom. The first and second encoding satisfy all of the above criteria, but various `good' candidates for the third encoding - inspired by an existing distributed implementation - invalidate one or the other criterion. While essentially confirming Palamidessi's result, our study suggests that the combination of strong compositionality and divergence-freedom is too strong for more practical purposes
- …