有一个使用TCP的WCF连接。服务器上的两个线程依次向该连接写入数据。客户端是否总是保证先处理第一条消息?根据我的理解,应该是可以保证的。
有一个使用TCP的WCF连接。服务器上的两个线程依次向该连接写入数据。客户端是否总是保证先处理第一条消息?根据我的理解,应该是可以保证的。
'通道'是按顺序进行的,所以我认为这里的答案是肯定的。
但是使用2个(独立的)线程时,“第一个”这个意思就不太明确了。
我认为Henk的问题(“第一”线程是什么意思)非常有趣。
考虑到线程可以在任何时候被暂停,Thread A是否可能在Thread B之前完成了Send()方法的执行,但Thread B却首先返回用户代码?
从调用者的角度来看,看起来好像Thread B先完成了发送。
我再想了一下,我认为这个问题很愚蠢。WCF为什么要关心哪个线程写入通道呢?
对通道的写操作是原子性的,并且TCP传输保证按顺序进行。正如Henk所指出的那样,通道是完全顺序的。它将始终以完全相同的顺序在客户端上发生。