Yeah as you mention the BufferLock does only a single read.  But what it does is if it reads more than 1 modification it submits those each as a task concurrently.  To be honest the BufferLock was a small issue since the first write awoke the reader even though I had 12 writes in my example.  So it had to process the first write serially, wait until completion then finally got to add the remaining 11 which it did in parallel.  Wonder if we can make that nicer so it has a small delay for when you have burst writes (or maybe that isn't a usual case? )