【问题标题】:Thread Synchronization and Thread Pausing\Resuming线程同步和线程暂停\恢复
【发布时间】:2010-12-28 06:47:12
【问题描述】:

我正在尝试将文件从本地发送到 FTP,因为我在发送文件之前锁定了 TCPClient。并且该文件发送正在另一个线程中进行。使主线程不受影响。

当我尝试在解锁之前使用锁定的 TCPClient 时,它会挂起。那么我应该如何进行,以便在发送文件的同时也可以接收文件。(两个函数在不同的线程中,但锁定了同一个 TCPClient 对象)。

我也在考虑暂停第一个线程并执行第二个线程,然后在第二个线程完成后恢复第一个线程。

请帮忙,我迷路了。

【问题讨论】:

  • 请说出您使用的是哪个平台...我一直假设 .NET 基于类名,但我可能错了。

标签: multithreading thread-safety ftp-client


【解决方案1】:

您不应该使用来自不同线程的相同TcpClient 来做不同的事情——它代表一个连接,因此在两个不同线程上发送和接收的数据会相互干扰。 (即使您在一个中“发送”文件并在另一个中“接收”文件,两者都需要发送接收数据。)

我建议你使用两个不同的TcpClient 实例。

【讨论】:

    【解决方案2】:

    TCP 是一种双向协议。即使你收到一个文件,你也一直在发送确认。这意味着 TCP 在 context 中工作:有一个接收端和一个发送端。

    您不应在实例中混合角色。使用 2 个不同的实例。它们可以并行工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2015-02-21
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多