Panopticon: An Omniscient Lock Broker for Efficient Distributed Transactions in the Datacenter

Panopticon: An Omniscient Lock Broker for Efficient Distributed Transactions in the Datacenter - Tasci & Demirbas, 2015 Today we return to the theme of distributed transactions, and a paper that won a best paper award from IEEE Big Data in 2015. Panopticon is a centralized lock broker (like Chubby and ZooKeeper) that manages distributed (decentralized) … Continue reading Panopticon: An Omniscient Lock Broker for Efficient Distributed Transactions in the Datacenter

We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees

We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees - Magara & Salvaneschi 2014 Earlier this week we saw in "A Survey on Reactive Programming" that (at least as of 2012) distributing reactive programs remained an active research challenge. Today's paper choice takes on that challenge and examines some consistency models for distributed reactive … Continue reading We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees

Read-Log-Update: A Lightweight Synchronization Mechanism for Concurrent Programming

Read-Log-Update: A Lightweight Synchronization Mechanism for Concurrent Programming - Matveev et al. 2015 An important paradigm in concurrent data structure scalability is to support read-only traversals: sequences of reads that execute without any synchronization (and hence require no memory fences and generate no contention). The gain from such unsynchronized traversals is significant because they account … Continue reading Read-Log-Update: A Lightweight Synchronization Mechanism for Concurrent Programming

Asynchronized Concurrency: The Secret to Scaling Concurrent Search Data Structures

Asynchronized Concurrency: The Secret to Scaling Concurrent Search Data Structures - David et al. 2015 Linked Lists, Hash Tables, Skip Lists, Binary Search Trees... these data structures are core to many programs. This paper studies such search data structures, supporting search, insert, and remove operations. In particular, the authors look at concurrent versions of these … Continue reading Asynchronized Concurrency: The Secret to Scaling Concurrent Search Data Structures

Generative Communication in Linda

Generative Communication in Linda - Gelernter 1985 This is the second of five papers selected by Peter Alvaro as part of his 'Desert Island papers' nominations. Generative communication is the basis of a new distributed programming language called Linda... Where most distributed languages are partially distributed in space and nondistributed in time, Linda is fully … Continue reading Generative Communication in Linda

Eraser: A dynamic data race detector for multi-threaded programs

Eraser: A dynamic data race detector for multi-threaded programs - Savage et al. 1997 Debugging a multithreaded program can be difficult. Simple errors in synchronization can produce timing-dependent data races that can take weeks or months to track down. Eraser dynamically detects data races in multi-threaded programs. There are two basic approaches to doing this, … Continue reading Eraser: A dynamic data race detector for multi-threaded programs

Scala Actors: Unifying thread-based and event-based programming

Scala Actors: Unifying thread-based and event-based programming - Haller & Odersky 2008 Yesterday we saw a Haskell-based approach to unifying events and threads, today's paper shows how to apply some of those same ideas on top of the JVM using Scala. There is an impedance mismatch between message-passing concurrency and virtual machines, such as the … Continue reading Scala Actors: Unifying thread-based and event-based programming

A language-based approach to unifying events and threads

A Language-based Approach to Unifying Events and Threads - Li and Zdancewic, 2006 So far in this mini-series we've seen that thread and event-based models are duals, that threads are a bad idea - you should really be using events, and that events are a bad idea - you should really be using threads. What … Continue reading A language-based approach to unifying events and threads