Silicon Valley Code Camp : October 11th and 12th 2014
Nathan Yospe has been a professional software developer since the early 90s. In that time, he has worked in a number of languages, from FORTRAN to Python, but the bulk of his work has been in C++, particularly in algorithms, concurrency, and libraries and infrastructure. He has written libraries for SDI balistic and orbital computation, a conforming implementation of the Unicode standard, load balanced thread dispatching, lock-free and lock-minimizing synchronization, NUMA aware allocation, contiguous memory layout with idiomatic C++ compatible interfaces, and more. Nathan currently works for SAP Labs, where his team is developing SAP's next generation of highly distributed databases.
It is often useful to model concurrent interactions for a single class or construct that supports concurrent or reentrant access as a multi-threaded sequence diagram. It would be very useful to be able to express the same sequential representation in a unit test, with the operations in different threads defined in the same flow.
I present a framework for doing this. It ships lambda expressions to any number of locally initialized threads, synchronizing, or optionally randomizing, the start times of each thread's block of code, and providing mechanisms to check in an assertion (for example) whether two or more threads are deadlocked or livelocked, whether a point of execution was reached while it was expected to be protected, and other such violations of concurrency expectations. Mechanisms are also provided for looping and timing.