Home

About

Advanced Search

Browse by Discipline

Scientific Societies

E-print Alerts

Add E-prints

E-print Network
FAQHELPSITE MAPCONTACT US


  Advanced Search  

 
Computer-Assisted Construction of Efficient Concurrent Algorithms Martin Vechev, Eran Yahav, Maged Michael, Hagit Attiya, Greta Yorsh
 

Summary: Computer-Assisted Construction of Efficient Concurrent Algorithms
Martin Vechev, Eran Yahav, Maged Michael, Hagit Attiya, Greta Yorsh
Practical and efficient concurrent systems are notoriously hard to design, implement, and verify. As concur-
rent systems become a larger part of society's mission-critical infrastructure, it is imperative that we raise the
level of confidence in the correctness of these systems, and that we understand the trade-offs inherent in our
algorithmic choice.
Current practices for developing concurrent systems are rather limited. Directly using low-level concurrency
constructs is the realm of experts, and is extremely error-prone. Generic higher-level constructs (e.g., transac-
tional memory) are currently limited, and are not clearly easier to use. Analytic techniques (e.g., race detection)
only address a fraction of the problems, and can only be applied after the code is written and is potentially broken
in a fundamental manner. This motivates us to explore a methodology and a tool that assist an algorithm designer
during the construction process. Our hope is that at least for specific domains it would be possible to generate
efficient provably correct concurrent systems from higher-level specifications.
A Motivating Example
Fig. 1 shows a standard sequential implementation of a set data structure. This implementation uses an underlying
singly linked-list. The list is sorted in ascending key order, and uses two sentinel nodes head (with a key value
smaller than the smallest possible key in the set) and tail (with a key value larger than the largest possible key in
the set). The set supports three operations: add, remove, and contains, with their standard meaning. All
operations use a macro LOCATE to traverse the list and locate an item based on the value of its key.
bool add(int key) {

  

Source: Attiya, Hagit - Department of Computer Science, Technion, Israel Institute of Technology

 

Collections: Computer Technologies and Information Sciences