C/C++ Causal Cycles Confound Compositionality [article]

Mike Dodds, Mark Batty, Alexey Gotsman
2013 Tiny Transactions on Computer Science  
In response to the rise of multicore processors, mainstream languages have begun to offer primitives for concurrent programming. To avoid the cost of inter-core synchronisation, the new C/C++ standard, C11 [2], offers weakly consistent relaxed operations, alongside traditional reads, writes and mutexes. When using relaxed operations, different threads may see different, apparently contradictory orders of events. C11 permits a particularly surprising kind of relaxed behaviour: cycles in
more » ... . Two conditional guards on different threads can be satisfied by writes down the other branch. Both branches execute, even though each appears to depend on the other.
dblp:journals/tinytocs/DoddsBG13 fatcat:zyon6467lrbh7bdjnmkskmdpa4