Published Sep 3, 2019

SE-Radio Episode 348 Riccardo Terrell on Concurrency

Join Riccardo Terrell as he delves into the complexities of concurrency in programming, exploring debugging techniques, concurrent design patterns, and the benefits of functional programming. Discover how to navigate multithreaded applications and achieve efficient code execution by using advanced strategies and asynchronous methodologies.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Debugging Challenges

    Debugging concurrent programs presents unique challenges due to the complexity of multiple threads running simultaneously. shares his approach to tackling these issues, emphasizing the importance of redesigning applications at a higher level to identify bottlenecks and optimize performance 1. He highlights the difficulty of setting breakpoints in multithreaded applications, as stopping one thread can allow others to continue running, complicating the debugging process 2.

    The complexity became when you have multiple threads running parallel, because now whenever you set a breakpoint, well, you just stop or block the current execution thread.

    ---

    To manage this, Terrell suggests controlling the scheduler and using tools like concurrent visualizers to map thread interactions and detect issues such as oversubscription and lock convoys 2.

       

    Debugging Tools

    Effective debugging of concurrent systems often relies on specialized tools. discusses the use of memory profilers and concurrency visualizers to analyze thread performance and memory allocation issues 3. He notes that memory profilers are particularly useful for identifying excessive memory allocation, which can be exacerbated in multithreaded applications.

    A good memory profiler is able to help you to detect where there are too much memory locations.

    ---

    Terrell also envisions future tools that leverage properties like immutability to automatically optimize code, highlighting the potential of functional programming in simplifying concurrent programming 3.

Related Episodes