Published Sep 3, 2019

Episode 44: Interview Brian Goetz and David Holmes

Brian Goetz and David Holmes dive into the future of concurrency, exploring advanced models like concurrent data structures and transactional memory, while examining the Java memory model's implications for current trends. They balance discussions on safety, liveness, and optimization complexities to illuminate the path forward for high-performance programming.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Data Structures

    Concurrent data structures are designed to be thread-safe and highly performant, but they come with their own set of challenges. explains that while these structures offer high performance, they may lack the exclusivity needed in certain applications 1. He notes that using non-blocking algorithms, which rely on atomic instructions instead of locks, can simplify data structures but are extremely difficult to implement correctly 1. adds that the complexity of developing lock-free algorithms makes them suitable only for experts, and their benefits are best realized when encapsulated in system libraries 1.

    If writing correct programs with locks is hard, writing non-blocking algorithms is ten times harder.

    ---

    suggests partitioning data structures to avoid locking entire structures, such as a hash table, which can improve performance 2.

       

    Transactional Memory

    Transactional memory offers a promising approach to concurrency control by allowing programmers to specify desired outcomes rather than implementation details. describes it as a model still in the research phase, aiming to simplify concurrency by letting the system determine the most efficient execution method 3. This approach contrasts with traditional locking mechanisms, which often complicate algorithms and increase the risk of deadlock 4.

    The idea is to allow the programmer to specify what he wants, not how he wants to do it.

    ---

    By eliminating the need for programmers to define the scope of data contention, transactional memory could potentially offer scalability and simplicity similar to garbage collection in programming 4.

Related Episodes