代码之家  ›  专栏  ›  技术社区  ›  Ben Zotto sberry

跨线程事件信令(Obj-C)的同步/等待设计?

  •  3
  • Ben Zotto sberry  · 技术社区  · 14 年前

    1. 主线程(M)可以向某个后台“生产者”线程(B)提交请求,以完成某些工作,例如对项X的计算结果。

    线程C可以自己同步地重新做工作,但是如果线程B正好在计算项X的过程中,我希望线程C阻塞并从B获得结果。计算结果可以在磁盘上找到,所以数据传递不是问题。

    在线程B和项目X完成之前,阻塞线程C的最佳方法是什么?

    注意,B处理的项是任意的——X只是本例中许多项中的一个。我想封锁,直到具体的X项完成。

    所以从概念上讲,我想要的是线程B在开始说“我正在处理X”时设置某种标志的方法,如果C进来看到这个标志,它会等待标志清除,然后得到结果。

    任何想法(或潜在的问题重组)欢迎!谢谢。

    2 回复  |  直到 14 年前
        1
  •  4
  •   John Calsbeek    14 年前

    如果可能,使用 NSOperation . 它有一个 -waitUntilFinished 非手术 对于你正在计算的项目,如果已经存在的话, NSLock 守卫 NSDictionary .

        2
  •  3
  •   Nick Moore Wain    14 年前