【问题标题】:NSOperation : how to pause and resumeNSOperation:如何暂停和恢复
【发布时间】:2011-12-20 06:46:25
【问题描述】:

我有一个用于复制文件的 NSOperation。我使用 write() 复制文件,然后可以在每个 write() 之间“暂停”复制。 但是我不知道如何:

  • 告诉操作它应该暂停(从 UI 主线程)
  • 暂停操作(我认为“while (isPaused==YES)”不是正确的选择
  • 告诉操作继续

感谢您的帮助

【问题讨论】:

  • 您可以让每个操作为文件的每个块创建另一个操作。每个复制块操作都依赖于它之前的操作,复制整个文件操作将创建一个操作队列并将所有复制块操作放入其中。当您暂停复制文件操作时,它将暂停其复制块操作队列。

标签: objective-c multithreading cocoa nsoperation


【解决方案1】:

您可以使用信号量来做到这一点;但与其使用信号量来控制对一段代码的访问(即获取锁、使用资源、释放锁模型),不如将其视为一个门——获取、测试条件/阻塞、释放和继续。

NSCondition 会给你一个高级信号量。在概述中,第 3 步是“测试我是否应该暂停”,第 4 步和第 5 步变为“不,所以什么都不做”。

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多