stream et lecture/écriture simultanée
Bonjour,
je cherche un expert du C# qui pourrait répondre à des questions précises :
J'ai deux threads et un MemoryStream nommé _buffer et un Stream de sortie nommé outStream ou _outStream.
Un des threads remplie le MemoryStream :
Code:
1 2 3 4 5 6 7
| void _speaker_WroteOuputDataEvent(Stream outStream, VozEventStreamArgs args)
{
byte[] buf = args.Data;
//ZvLogManager.InfoFormat("writing {0} on the stream {1}", buf.Length, outStream);
outStream.Write(buf, 0, buf.Length);
_buffer.Write(buf, 0, buf.Length);
} |
l'autre thread lit le MemoryStream et écrit dans outStream
Code:
1 2 3 4 5 6 7 8
| public override void Start()
{
int _chunckLen = 1000;
int bytesRead;
byte[] buf = new byte[_chunckLen];
while ((bytesRead = _buffer.Read(buf, 0, _chunckLen)) != 0)
_outStream.Write(buf, 0, bytesRead);
} |
Je voudrais savoir ce que vous pensez de ce design ?
On est dans un cas Producteur/Consommateur. Le premier thread écrit dans le MemoryStream et le deuxième lit.
Dernière précision, il va y avoir un seul producteur et plusieurs consomateurs. Est-ce que je devrais utiliser la fonction BeginRead ou lieu de Read parce qu'on a des lectures et écriture en simultanée sur le même stream ?