【问题标题】:Is correct order of WCF TCP messages guaranteed for multiple sending threads?是否保证多个发送线程的 WCF TCP 消息的正确顺序?
【发布时间】:2011-02-09 03:38:47
【问题描述】:

有一个使用 TCP 的 WCF 连接。服务器上的两个线程连续写入此连接。是否总是保证第一条消息首先由客户端处理?根据我的理解应该是有保障的。

【问题讨论】:

    标签: .net wcf multithreading tcp


    【解决方案1】:

    “频道”是连续的,所以我认为这里的答案是肯定的。

    但是对于 2 个(独立的)线程,'first' 的含义没有很好的定义。

    【讨论】:

    • 我认为它定义得很好。写操作是原子的,所以“第一个”线程是……嗯……第一个要写的线程。两者中的哪个线程无关紧要。
    【解决方案2】:

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

    鉴于线程可以在任何时候暂停,是否有可能线程 A 可以在线程 B 之前完成 Send() 方法的执行,但线程 B 是第一个返回用户代码的?

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

    【讨论】:

      【解决方案3】:

      我想了更多,我认为这个问题很愚蠢。为什么 WCF 应该关心哪个线程写入通道?

      对通道的写操作是原子的,保证 TCP 传输是有序的。正如 Henk 所指出的,通道是完全连续的。它只会以完全相同的顺序在客户端上发生。

      【讨论】:

        猜你喜欢
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 1970-01-01
        • 2021-02-28
        • 1970-01-01
        相关资源
        最近更新 更多