I have to work with a system where there are several different communication interfaces, and all of them use asynchronous writes and reads. A lot of the time I'm simply passing data from one layer to another, so I'm looking to minimize the copying of data.
What is a good strategy to make sure that the data is protected while it's being used, while at the same time minimizing the copying of the data?