Memory Stream Multiplexer–write and read from many threads simultaneously
Here’s an implementation of MemoryStream like
buffer manager where one thread can write and many threads
can read simultaneously. Each reading thread gets its own
reader and can read from the shared stream on its own
without blocking write operation or other parallel read
operations. It supports blocking Read call so that reader
threads can call Read(…) and wait until some
data is available, exactly the same way you would expect a
Stream to behave. You can use this to read
content from network or file in one thread and then get it
read by one or more threads simultaneously. Readers do not
block writing. As a result, both read and write happens
concurrently. Handy for building http proxy where you are
downloading a certain file and you have multiple clients
asking for the same file at the same time. You can download
it in one thread and let one or more client threads read
from the same buffer exactly at the same time. You can also
use this to read same file on disk from multiple clients at
the same time. You can also use this to implement a server
side cache where the same buffer is read by multiple clients
at the same time.
See the detail implementation here:
Memory Stream Multiplexer–write and read from many threads simultaneously
Don’t forget to vote.