If I bracket the write call with a mutex to protect the data block from
corruption as it's actually being written does that interfere with the read
operation?
Presumably this needs to compare the write pointer with the read one to find
out if there is anything to read.