![]() |
1
3
解决方案在您的评论中
所以在你开始下载之后,你马上等待你的信号灯。这将一直阻塞,直到在getdata方法的回调关闭中发出信号为止。只有这样,循环才能继续到下一个文档并下载它。通过这种方式,您可以逐个下载一个文件,并在下载运行时阻止当前线程。 使用串行队列不是这里的一个选项,因为这只会导致下载 开始 但您可以影响它们的完成顺序。 不过,这是一种相当低效的做法。如果同时向网络层发出多个请求,那么它的运行速度可能会更快(考虑并行下载和HTTP管道)。同时,你也在浪费一条可以同时做一些不同工作的线。如果在同一时间还有更多的工作要做,那么GCD将生成另一个线程,这会浪费内存和其他资源。 更好的模式是跳过信号量,让下载并行运行,并将图像直接存储在数组中的正确索引中。当然,这意味着您必须事先准备一个适当大小的数组,并且您必须为丢失或失败的图像考虑一个占位符。期权可以很好地发挥作用:
|
![]() |
2
0
这个
|
![]() |
arkham knight · 使用信号量的线程同步 6 年前 |
![]() |
K.Miao · 其他进程不会使用信号量唤醒 7 年前 |
|
Akhil V · 生产者消费者C中的细分错误 7 年前 |
![]() |
Dark Inspiration · 信号和互斥行为怀疑 8 年前 |
![]() |
sheikh_anton · 选择共享内存或unix信号量键的惯用方法 9 年前 |
|
user5134749 · 同步:线程以相同的顺序执行两个关键部分 9 年前 |
![]() |
Zhang Biao · 如何在FreeRTOS中使用互斥锁? 9 年前 |