美文网首页
并发线程,耗时不同,顺序结束

并发线程,耗时不同,顺序结束

作者: 不会游泳De鱼 | 来源:发表于2016-11-12 08:59 被阅读33次

    问题:有1000个线程,顺序编号,并发执行,每一个线程的耗时不同。要求最后线程顺序结束。

    ps:比如有5个线程,编号12345,每一个线程最后结束时输出编号,并发执行,1耗时10秒,2耗时4秒,3耗时6秒,4耗时1秒,5耗时2秒。245耗时很少,很快完成,但是必须等待1结束输出之后,2才能结束,提前完成了也要等待1的完成。依次类推。

    首先会想到NSOperation的依赖dependency,以及GCD的信号量semaphore。
    但是他们的作用都是一个线程要等另一个线程结束后才开始,而非问题中的,线程同时开始,只有结束时等待,所以不适用。

    然后进一步想,问题中的并发,线程同时开始,本质和平常使用的没有区别,真正问题在于每一个线程本身的真实工作做完将要结束时,这时要检查顺序的上一个线程是否完成。

    
    //Thread works is over, need finish
    while (!lastThread.isFinish) {
      //wait lastThread finish
    }
    self.isFinish = YES;
    

    通过查看api,只有NSOperation有可能实现。
    通过继承NSOperation,重写start方法,自己控制状态。

    相关文章

      网友评论

          本文标题:并发线程,耗时不同,顺序结束

          本文链接:https://www.haomeiwen.com/subject/wkfqpttx.html