rixed,
Ah, I think I see. By updating the end pointer after updating the buffer, the 920 would be prevented from reading the new data in the buffer.
The remaining problem (or design decision) is with the 940 writing "past" the begin pointer. This "problem" is separate from the locking issue...