grand-central-dispatch相关内容

GCD和线程

我想了解一些有关GCD和线程的信息. 我的视图控制器中有一个for循环,它要求我的模型执行一些异步网络请求. 因此,如果循环运行5次,该模型将发出5个网络请求. 考虑到我正在使用NSURLConnection的sendAsyncRequest且将在另外5个线程上调用完成处理程序的事实,声明模型已创建5个线程是否正确? 现在,如果我要求我的视图控制器在不同的线程上执行此for ..

将应用程序置于后台时,GCD分派的操作未运行

我启动了一种方法,该方法本质上是使用dispatch_queue_create然后使用dispatch_async的无穷循环(然后代码循环位于分派的块内). 循环完美运行.但是,当应用程序进入后台时,它会暂停.然后,当应用程序成为前台时,它将重新启动. 如何防止这种情况发生?我一直在寻找解决方案 使用如果设备无法在后台运行代码或您必须使用其结束运行的任务ID,则此方法将返回 UIBa ..
发布时间:2020-11-20 05:18:46 移动开发

在继续之前,如何等待经过dispatch_async?

我正在执行一系列的dispatch_async,我只想在完成所有操作后才更新UI.问题是dispatch_async中的方法在单独的线程中调用某些东西,因此它在数据完全加载之前返回,而在加载所有内容之前调用dispatch_group_notify. 因此,我引入了一个无限循环,使其等待直到设置了标志为止. 这是最好的方法吗?参见下面的代码. dispatch_queue_t queu ..
发布时间:2020-11-20 05:18:43 移动开发

Dispatch_async()和类似方法是否提供内存隔离墙?

当我通过dispatch_async或类似方法在任何队列上运行一个块时,GCD是否在块调用周围提供线程防护?我以为可以,但是据我所知,文档没有给出任何一种提示. 解决方案 在Cocoa-Dev邮件列表中的电子邮件线程中,格雷格·帕克(Apple的运行时工程师) [S]因为使用GCD并没有给我们所有人带来灾难,所以我认为dispatch_async()等确实提供了此类内存障碍.同样,N ..
发布时间:2020-11-20 05:18:40 移动开发

是否可以创建多个DispatchQueue?

我对DispatchQueue的东西(包括DispatchGroups,Qos等)不太老.我现在有一个顾虑. 就像,我有一个ViewController,可用于Android的ViewPager UI.在那个VC中,我有一个TableView,每次ViewPager中的“页面"被更改时,它都会重新加载. 我在TableView单元格中有一个favourite button属性.当用户点击该按钮时, ..
发布时间:2020-11-20 05:17:38 移动开发

dispatch_after与performSelector afterDelay

我正在写一个带有滑块的游戏.为了使游戏从已解决状态开始随机播放,我想以固定的时间间隔反复调用pushRandomPiece以便从视觉上对游戏进行随机播放. 我本来想使用dispatch_after,但是我对启动日期有疑问: 这有效: -(void)shuffle { for (int i=0; i ..
发布时间:2020-11-20 05:17:31 移动开发

GCD和外螺纹

有没有一种方法可以创建新的(或关联现有的)调度队列并将其绑定到特定线程? 我有一个AudioUnit回调proc在我无法控制的线程上运行,并且希望在正确执行回调之前,检查某个给定的队列是否有任何块供我在该AudioUnit线程中处理. 我可能可以使用OSAmtomicEnqueue和朋友,但是想知道GCD是否已经提供了某种“转义"功能,允许我将特定线程绑定到特定队列? 解决方案 ..
发布时间:2020-11-20 05:15:17 移动开发

在iOS上,您能否发出同步网络请求(但不在主线程上),并且仍然获得进度回调(在单独的非主线程上)?

在iOS上,您可以发出同步网络请求(在主线程之外)并获取进度回调(在单独的非主线程上)吗? 我有一个串行(每次一次操作)后台队列,该队列运行所有耗时的工作,这些工作现在不需要完成正确.我确实想显示下载作业的进度.看起来您无法实例化NSURLConnection并配置委托,启动同步连接,然后获取进度回调. 是否有一种方法可以在该后台队列上发出同步请求(同步,因为它后面的作业要等到完成才开 ..
发布时间:2020-11-20 05:15:14 移动开发

DispatchQueue.sync与DispatchQueue.async之间的区别

我试图了解Dispatch Sync和Dispatch Async,我知道它以GCD的同步和异步方式执行.但是当我尝试下面的代码时,它给了我奇怪的情况. 我在Playground和Sync块中执行了3次测试以下代码,而async块给出了NSException. //:基于UIKit的Playground,用于呈现用户界面 import UIKit import Playgroun ..
发布时间:2020-11-20 05:14:02 移动开发

dispatch_async中的同步块

我已经看到了将异步分派到主队列或私有分派队列(串行)的代码,然后在分派代码块中进行了@synchronized.您想在什么情况下这样做?串行队列是否已不提供所需的同步? 可以将同步块替换为另一个GCD调度吗? 解决方案 @synchronized()确保所包含的代码(对于给定标记作为@synchronized的参数)一次仅在一个线程上运行. 提交给串行队列的块一次执行一次,即. ..
发布时间:2020-11-20 05:13:59 移动开发