Concurrent programming: algorithms, principles, and foundations (2013)