• DocumentCode
    15246
  • Title

    LC/DC: Lockless Containers and Data Concurrency a Novel Nonblocking Container Library for Multicore Applications

  • Author

    Dechev, Damian ; Laborde, Pierre ; Feldman, Steven D.

  • Author_Institution
    Sandia Nat. Labs., Livermore, CA, USA
  • Volume
    1
  • fYear
    2013
  • fDate
    2013
  • Firstpage
    625
  • Lastpage
    645
  • Abstract
    Exploiting the parallelism in multiprocessor systems is a major challenge in modern computer science. Multicore programming demands a change in the way we design and use fundamental data structures. The standard collection of data structures and algorithms in C++11 is the sequential standard template library (STL). In this paper, we present their vision for the theory and practice for the design and implementation of a collection of highly concurrent fundamental data structures for multiprocessor application development with associated programming interface and advanced optimization support. Specifically, the proposed approach will provide a familiar, easy-to-use, and composable interface, similar to that of C++ STL. Each container type will be enhanced with internal support for nonblocking synchronization of its data access, thereby providing better safety and performance than traditional blocking synchronization by: 1) eliminating hazards such as deadlock, livelock, and priority inversion and 2) by being highly scalable in supporting large numbers of threads. The new library, lockless containers/data concurrency, will provide algorithms for handling fundamental computations in multithreaded contexts, and will incorporate these into libraries with familiar look and feel. The proposed approach will provide an immense boost in performance and software reuse, consequently productivity, for developers of scientific and systems applications, which are predominantly in C/C++. STL is widely used and a concurrent replacement library will have an immediate practical relevance and a significant impact on a variety of parallel programming domains including simulation, massive data mining, computational biology, financial engineering, and embedded control systems. As a proof-of-concept, this paper discusses the first design and implementation of a wait-free hash table.
  • Keywords
    C++ language; data structures; multiprocessing systems; optimisation; parallel programming; C++ STL; C++11; LC/DC; computational biology; concurrent replacement library; data concurrency; data structure; embedded control system; financial engineering; lockless container; massive data mining; multicore applications; multicore programming; multiprocessor system; multithreaded context; nonblocking container library; nonblocking synchronization; parallel programming; sequential standard template library; software reusability; wait-free hash table; Data structures; Instruction sets; Multicore programming; Multiprocessors; Programming; Synchronization; Nonblocking; concurrency; data container; data storage; data structures; hash table; library; lock-free; non-blocking; parallel programming; parallelism; wait-free;
  • fLanguage
    English
  • Journal_Title
    Access, IEEE
  • Publisher
    ieee
  • ISSN
    2169-3536
  • Type

    jour

  • DOI
    10.1109/ACCESS.2013.2282500
  • Filename
    6603321