同时从多个线程在 NetworkStream 上使用 WriteAsync 线程安全吗?

myW*_*SON 4 .net c# .net-4.0

当将TcpClient其放入stream多个线程并WriteAsync在每个线程上执行时。它是线程安全的吗?数据(传递给 write 方法的字节数组)是否会作为完整的块传递给WriteAsync

Ern*_*rno 5

不,这不安全。

来自MSDN 的备注

读取和写入操作可以在 NetworkStream 类的实例上同时执行,无需同步。只要有一个唯一的线程用于写操作,并且有一个唯一的线程用于读操作,那么读和写线程之间就不会交叉干扰,并且不需要同步。

因此,当您有多个写入线程时,您需要同步它们。