KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
There is a lib that outputs its results into a given Stream object. I would like to begin consuming the results before the lib is done. The Stream should be blocking to simplify usage and avoid excessive memory consumption if producer runs ahead too far; thread safe to allow independent existence of producer and consumer. Once the lib finishes, the producer thread should close the stream, hence notifying consumer that there is no more data. I was thinking of using NetworkStream or PipeStream (anonymous), but both are probably slow as they send data through kernel. Any recomendations? var stream = new AsyncBlockingBufferedStream(); void ProduceData() { // In producer thread externalLib.GenerateData(stream); stream.Close(); } void ConsumeData() { // In consumer thread int read; while ((read = stream.Read(...)) != 0) { ... } }
Tags (comma-separated)
Save Edits
Cancel