Hans Boehm(Google, Palo Alto, California, hosted by Viktor Vafeiadis)
"Putting Threads on a Solid Foundation: Some Remaining Issus"
Shared memory parallel machines have existed since the 1960s and, with the proliferation of multi-core processors, shared memory parallel programming has become increasingly important. Unfortunately, some fairly basic questions about parallel program semantics have not been addressed until quite recently. Multi-threaded programming languages are on much more solid ground than they were as recently as a decade ago. Nonetheless a number of foundational issues have turned out to be surprisingly subtle and resistant to easy solutions. We briefly survey three such issues:
- All major programming languages support atomic operations that enforce only veryi weak memory ordering properties. These implicitly rely on enforcement of dependencies to preclude certain "nonsensical" outcomes. Unfortunately, we do not know how to define a suitable notion of dependency.
- Garbage collected programming languages such as Java, rely on finalization, most commonly to interact correctly with non-garbage-collected parts of the system. But finalization raises largely unsolved concurrency issues. As a result, almost all interesting uses of finalization uses are subtly, but seriously, incorrect.
- It can be difficult to avoid object destruction or memory deallocation races in-garbage-collected languages like C++. As a result, async(), the basic C++11 thread spawning facility has surprisingly complex semantics, with unintended consequences.
|Time:||Friday, 09.01.2015, 03:00 pm|
|Place:||MPI-SWS Kaiserslautern Paul Ehrlich Str. 26, room111|
|Video:||Simultaneous video cast to MPI-SWS Saarbrücken, Campus E1 5, room 029|