Æle*_*lex 29 objective-c fifo grand-central-dispatch objective-c-blocks
我正在尝试为我工作的公司创建一个(网络)同步数组.虽然网络部分工作正常,但我已经陷入了一个问题.
我希望创建一个新队列使用dispatch_create_queue,我将添加两个不在主线程上运行的块,但是以串行方式运行,这意味着首先必须运行第一个块,然后是第二个块,而不是平行.
我已经阅读了苹果文档,但至少可以说是令人困惑的.
当我使用创建队列dispatch_queue_create然后使用时添加块(在它们被定义之后)dispatch_sync,我发现该块仍然在主线程上执行.
使用时dispatch_async,即当主线程上没有执行块时.
当我尝试使用dispatch_sync它们添加两个块时永远被阻止.
两个块似乎运行良好并且离开主线程的唯一时间是在调用时dispatch_async.
然而,我之所以选择GCD和同步方法,是因为我的印象是我正在创建一个新队列(因此是一个新线程),并且向该队列添加块只会阻塞一个,直到另一个完成执行.是不是这种情况,或者创建队列不保证代码不会在主线程上运行?
Fer*_*zon 60
这是GCD中的FIFO队列:
dispatch_queue_t serialQueue = dispatch_queue_create("com.blah.queue", DISPATCH_QUEUE_SERIAL);
...
dispatch_async(serialQueue, ^{
//block1
});
dispatch_async(serialQueue, ^{
//block2
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18406 次 |
| 最近记录: |