多个发送线程的 WCF TCP 消息的正确顺序是否得到保证?

3

有一个使用TCP的WCF连接。服务器上的两个线程依次向该连接写入数据。客户端是否总是保证先处理第一条消息?根据我的理解,应该是可以保证的。

3个回答

2

'通道'是按顺序进行的,所以我认为这里的答案是肯定的。

但是使用2个(独立的)线程时,“第一个”这个意思就不太明确了。


我认为它已经很好地定义了。写操作是原子性的,因此“第一个”线程是...嗯...第一个要写入的线程。无论这两个线程中的哪一个。 - mafu

1

我认为Henk的问题(“第一”线程是什么意思)非常有趣。

考虑到线程可以在任何时候被暂停,Thread A是否可能在Thread B之前完成了Send()方法的执行,但Thread B却首先返回用户代码?

从调用者的角度来看,看起来好像Thread B先完成了发送。


0

我再想了一下,我认为这个问题很愚蠢。WCF为什么要关心哪个线程写入通道呢?

对通道的写操作是原子性的,并且TCP传输保证按顺序进行。正如Henk所指出的那样,通道是完全顺序的。它将始终以完全相同的顺序在客户端上发生。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接