【问题标题】:iOS FTP concurrent upload and downloadiOS FTP并发上传下载
【发布时间】:2013-10-24 01:07:07
【问题描述】:

我正在尝试编写一个代码,其中我必须创建 2 个并行线程(在调度串行队列中运行)1 个线程将上传,另一个线程将从服务器下载文件。上传和下载进度都将在另一个屏幕上更新,其中包含字节上传和下载。

但我遇到了一些奇怪的问题:-

  1. 一旦我创建了辅助线程,我的函数就会返回到调度串行队列,它会启动另一个已调度的串行任务,而不是先等待 2 个当前并行任务完成。

  2. 一旦下载线程开始上传线程停止上传文件并在写入服务器期间返回 -1。

我正在使用 Apple SimpleFTP 示例并尝试在 2 个并行线程中运行它,1 用于放置,第二用于获取。

知道为什么在从服务器下载文件时上传停止(我也与 FTP 服务器建立了 2 个不同的连接)

提前感谢您的帮助。

【问题讨论】:

  • 你有什么理由不使用 GCD + dispatch_semaphore_t 变量的标准块?
  • 串行队列中发生的其他任务很少(一个接一个地完成),这些任务应该串行完成。这些串行队列是由 GCD 本身创建的。对于这个 FTP 任务,我们必须创建 2 个并行线程,并且上传和下载都应该同时运行。我尝试使用 GCD async 和全局 dispath 但不是等待任务完成,而是原来的主串行队列开始运行另一个任务..这是要求..
  • 对此有更多更新.. 似乎 - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode 正在阻止另一个线程访问另一个类中的相同委托函数,直到NSStream close 不会被调用。任何人都可以对此有所了解..

标签: iphone ios cocoa-touch ios5 ios6


【解决方案1】:

使用同步 FTP 请求解决了该问题。 run loop run 函数阻塞了另一个线程调用流委托函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    相关资源
    最近更新 更多