Tag: concurrency

Episode 68: Dan Grossman on Garbage Collection and Transactional Memory

Filed in Episodes by on September 14, 2007 0 Comments
Episode 68: Dan Grossman on Garbage Collection and Transactional Memory

This episode features a discussion with Dan Grossman about an essay paper he wrote for this year’s OOPSLA conference. The paper is about an analogy between garbage collection and transactional memory. In addition to seeing the beauty of the analogy, the discussion also serves as a good introduction to transactional memory (which was mentioned in the Goetz/Holmes episode) and – to some extent – to garbage collection.

Continue Reading »

Episode 44: Interview Brian Goetz and David Holmes

Filed in Episodes by on January 27, 2007 1 Comment
Episode 44: Interview Brian Goetz and David Holmes

This is another episode on concurrency. We talk to two experts in the field, Brian Goetz and David Holmes about aspects of concurrency we hadn’t really covered before.

We start out by discussing liveness and safety and then continue to talk about synchronizers (latches, barriers, semaphores) as well as the importance of agreeing on protocols when developing concurrent applications. We then talked about thread confinement as a way of building thread-safe programs, as well as using functional programming and immutable data. The next set of topics covers various ways of how compilers can optimize the performance wrt. to concurrency, talking about techniques such as escape analysis as well as lock elision and coarsening. We then covered how to test concurrent programs and the consequences of the Java memory model on concurrency. We then went on to look at some more advanced topics, namely, lock-free programming and atomic variables. We also briefly discussed the idea of transactional memory.

Finally, we looked at how better language support – specifically, a more declarative style of concurrent programming as e.g. in the Fortress language – can aid in improving the quality of concurrent programs.

Continue Reading »

Episode 36: Interview Guy Steele

Filed in Episodes by on November 10, 2006 1 Comment
Episode 36: Interview Guy Steele

This episode is an interview with Guy L. Steele Jr.. Guy is a Sun Fellow and heads the Programming Language Research Group within Sun, and a generally well known “programming language guy” (see here for details). We briefly talk about Lisp and the resurgence of dynamic languages before we delve into the main topic, the Fortress programming language he is working on. Fortress is a language intended to replace Fortran as a scientific computing language. We talk about how mathematical notations, syntax extensio and built-in support for parallelism are crucial properties of such a language. We then briefly talk about potentials for compiler optimization before taking a closer look at the type system (static typing, type inference), traits and contract specification as well as first-class support for hierarchical components. We conclude the discussion with a look at automatic partitioning and distribuion of concurrent algorithms and a brief look at the future roadmap for the Fortress language.

Continue Reading »

Episode 29: Concurrency Pt.3

Filed in Episodes by on September 13, 2006 1 Comment
Episode 29: Concurrency Pt.3

The third part of our concurrency series by Michael and Alexander discusses how to build highly scalable servers. The discussion focusses especially on event-driven servers. As possible solution patterns a reactor-based design is suggested along-side several patterns for multi-threading issues: Reader/Writers Locks, Thread Pools, and Leader/Followers.

Continue Reading »

Episode 19: Concurrency Pt. 2

Filed in Episodes by on June 15, 2006 1 Comment
Episode 19: Concurrency Pt. 2

In this second part of our concurrency series Michael and Alexander talk about basic patterns for concurrent programming, such as Active and Monitor Object, Scoped Locking and Futures. Further, they discuss some architectural considerations regarding the number of threads and resource usage in general. For more information, see the references for part one as well as the following links

Continue Reading »