The other day I was watching Rob Pike's presentation on " Concurrency is Not Parallelism " where indeed he makes a good distinction between concurrency and parallelism, but I felt that something was missing. You see, what he calls Concurrency has very little to do with what Andreia and I call Concurrency. As such, I've been trying to distil why that is, and this post addresses some of these ideas.…
The other day, I was daydreaming about what the " perfect language " for concurrency would look like, and one of the design options I was considering, was how useful were coroutines, and can they coexist with transactions? Spoiler alert: the answer is an almost certainly no . There is usefulness in the transactional model and in the coroutine model. Transactions are a nice way to solve problems…
Let's talk about why Snapshot Isolation is not enough for a general purpose concurrency control. Snapshot Isolation has been adapted by several major database vendors however, it is rarely used outside of Database Management Systems… Why is that? According to the wikipedia, Snapshot Isolation (SI) is a guarantee that all reads made in a transaction will see a consistent snapshot of the database…