ios – 简单的GCD串行队列示例,如使用块的FIFO

我阅读了Apple文档,了解如何使用串行队列来确保以可预测的顺序执行任务,但现在我很困惑.
有些我如何能够连续工作,但仍然我不清楚,所以我需要简单的序列示例我的方法来连续执行.

我将我的功能分成4部分,现在希望它们能够连续执行

[self ReadAllImagesFromPhotosLibrary];

[self WriteFewImagestoDirectory];

[self GettingBackAllImagesFromFolder]; 

[self MoveToNextView];

解决方法

为了跟进和改进 iCoder的答案,你可以并且应该做以下.
dispatch_queue_t serialQueue = dispatch_queue_create("com.unique.name.queue",DISPATCH_QUEUE_SERIAL);

dispatch_async(serialQueue,^{
        [self ReadAllImagesFromPhotosLibrary];
    }); 
dispatch_async(serialQueue,^{
         [self WriteFewImagestoDirectory];
});
dispatch_async(serialQueue,^{
    [self GettingBackAllImagesFromFolder]; 
});
dispatch_async(serialQueue,^{
    [self MoveToNextView];
});

尽管上述调用是异步的,但它们将按照DISPATCH_QUEUE_SERIAL的状态排队并连续运行.同步和异步之间的区别在于,通过同步,您的代码将在运行以下代码之前暂停并等待块答案,因此如果执行时间长,可能会冻结您的UI.而使用异步,代码运行,块被异步返回.

但是,由于GCD(Grand Central Dispatch),您存储在DISPATCH_QUEUE_SERIAL中的任务将按照添加的顺序等待并执行.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...