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

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

作者: 不会游泳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方法,自己控制状态。

相关文章

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

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

  • GCD 信号量

    本文通过信号量解决了 并发线程,耗时不同,顺序结束 问题。 信号量(Semaphore),有时被称为信号灯,是...

  • 1-5linux系统编程——线程并发

    线程并发要求 线程并发性 同步:进程/线程中的部分指令需要按照一定的顺序前后执行异步:进程/线程之前的指令执行顺序...

  • 2018-05-19

    java的多线程: 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任...

  • java刷题-2

    总结 多线程控制并发顺序问题,线程之间通信问题AtomicIntegerlock wait + notifyAll...

  • iOS多线程-并发队列

    GCD 并发队列 并发队列,异步执行 问题:1.会开几条线程?会开多条线程,线程数量是由GCD来决定2.会顺序执行...

  • 常见并发模型对比

    并发模型【UNP】对应多进程多线程阻塞IOIO复用长连接并发性多核开销互通顺序性线程数特点accept+read/...

  • iOS GCD知识

    为什么要用GCD 更好的利用多核、更好的利用并发 什么时候用到GCD 解决耗时、阻塞主队列(主线程)、完成并发任务...

  • java web系统在高并发和分布式下如何实现订单号生成唯一

    方案一:如果没有并发,订单号只在一个线程内产生,那么由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间...

  • 并发

    保证多线程的顺序执行 方式1:通过join方法保证多线程的顺序join作用:让主线程等待子线程结束后才能继续运行 ...

网友评论

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

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