grand-central-dispatch相关内容
我想了解一些有关GCD和线程的信息. 我的视图控制器中有一个for循环,它要求我的模型执行一些异步网络请求. 因此,如果循环运行5次,该模型将发出5个网络请求. 考虑到我正在使用NSURLConnection的sendAsyncRequest且将在另外5个线程上调用完成处理程序的事实,声明模型已创建5个线程是否正确? 现在,如果我要求我的视图控制器在不同的线程上执行此for
..
我启动了一种方法,该方法本质上是使用dispatch_queue_create然后使用dispatch_async的无穷循环(然后代码循环位于分派的块内). 循环完美运行.但是,当应用程序进入后台时,它会暂停.然后,当应用程序成为前台时,它将重新启动. 如何防止这种情况发生?我一直在寻找解决方案 使用如果设备无法在后台运行代码或您必须使用其结束运行的任务ID,则此方法将返回 UIBa
..
我正在执行一系列的dispatch_async,我只想在完成所有操作后才更新UI.问题是dispatch_async中的方法在单独的线程中调用某些东西,因此它在数据完全加载之前返回,而在加载所有内容之前调用dispatch_group_notify. 因此,我引入了一个无限循环,使其等待直到设置了标志为止. 这是最好的方法吗?参见下面的代码. dispatch_queue_t queu
..
当我通过dispatch_async或类似方法在任何队列上运行一个块时,GCD是否在块调用周围提供线程防护?我以为可以,但是据我所知,文档没有给出任何一种提示. 解决方案 在Cocoa-Dev邮件列表中的电子邮件线程中,格雷格·帕克(Apple的运行时工程师) [S]因为使用GCD并没有给我们所有人带来灾难,所以我认为dispatch_async()等确实提供了此类内存障碍.同样,N
..
我对DispatchQueue的东西(包括DispatchGroups,Qos等)不太老.我现在有一个顾虑. 就像,我有一个ViewController,可用于Android的ViewPager UI.在那个VC中,我有一个TableView,每次ViewPager中的“页面"被更改时,它都会重新加载. 我在TableView单元格中有一个favourite button属性.当用户点击该按钮时,
..
我正在创建一个简单的游戏. 我有以下代码: - (void)doStuff { double delayInSeconds = [NSNumber randomFloatBetweenLowerBound:0.8f upperBound:2.6f]; // Own category on NSNumber returns random float. dispatc
..
我正在写一个带有滑块的游戏.为了使游戏从已解决状态开始随机播放,我想以固定的时间间隔反复调用pushRandomPiece以便从视觉上对游戏进行随机播放. 我本来想使用dispatch_after,但是我对启动日期有疑问: 这有效: -(void)shuffle { for (int i=0; i
..
我正在学习Apple的GCD,并观看视频在GCD中并发编程斯威夫特3 . 在此视频中的16:00,描述了DispatchWorkItem的标记称为.wait,功能和图表均准确显示了我认为myQueue.sync(execute:)的用途. 所以,我的问题是;之间有什么区别 myQueue.sync { sleep(1); print("sync") } 并且: myQu
..
我已经使用Xcode8 beta4将现有的Swift2.3代码转换为Swift3.0. Xcode自动将语法转换为Swift3.0,但无法创建串行调度队列. private let serialQueue = DispatchQueue(label: "identifier", qos: DispatchQueue.Attributes.serial) 解决方案 不再有.serial
..
我正在使用Swift的DEVELOPMENT-SNAPSHOT-2016-06-06-a版本.我似乎无法解决这个问题,我已经尝试在不同的地方使用@noescape,但是仍然出现以下错误: 关闭无法隐式捕获变异的自身参数 为了更好地解释,这是一个简单的示例: public struct ExampleStruct { let connectQueue = dispatch_qu
..
我有4个标签,并且都具有UIWebView.我希望第一个选项卡应该加载并立即显示,而不必等待其他人加载.为此,我在UITabBarController类中进行了此操作: for(UIViewController * viewController in self.viewControllers){ if(![[NSUserDefaults standardUserDefaul
..
有没有一种方法可以创建新的(或关联现有的)调度队列并将其绑定到特定线程? 我有一个AudioUnit回调proc在我无法控制的线程上运行,并且希望在正确执行回调之前,检查某个给定的队列是否有任何块供我在该AudioUnit线程中处理. 我可能可以使用OSAmtomicEnqueue和朋友,但是想知道GCD是否已经提供了某种“转义"功能,允许我将特定线程绑定到特定队列? 解决方案
..
在iOS上,您可以发出同步网络请求(在主线程之外)并获取进度回调(在单独的非主线程上)吗? 我有一个串行(每次一次操作)后台队列,该队列运行所有耗时的工作,这些工作现在不需要完成正确.我确实想显示下载作业的进度.看起来您无法实例化NSURLConnection并配置委托,启动同步连接,然后获取进度回调. 是否有一种方法可以在该后台队列上发出同步请求(同步,因为它后面的作业要等到完成才开
..
例如,有一个1000次循环.使其快速,有效且不会导致死锁的最大值是多少? let group = DispatchGroup() let queue = DispatchQueue(label: "com.num.loop", attributes: .concurrent) let semaphore = DispatchSemaphore(value: 4) for i in 1...1
..
我需要进行验证,为此,我需要知道任务是否仍在运行,我使用此代码来启动任务 ` SerialQueue = dispatch_queue_create("miColaEnSerie", NULL); dispatch_async(SerialQueue, ^{ [self loadImageFriend:init finalWhitNumber:final img
..
我试图了解Dispatch Sync和Dispatch Async,我知道它以GCD的同步和异步方式执行.但是当我尝试下面的代码时,它给了我奇怪的情况. 我在Playground和Sync块中执行了3次测试以下代码,而async块给出了NSException. //:基于UIKit的Playground,用于呈现用户界面 import UIKit import Playgroun
..
我已经看到了将异步分派到主队列或私有分派队列(串行)的代码,然后在分派代码块中进行了@synchronized.您想在什么情况下这样做?串行队列是否已不提供所需的同步? 可以将同步块替换为另一个GCD调度吗? 解决方案 @synchronized()确保所包含的代码(对于给定标记作为@synchronized的参数)一次仅在一个线程上运行. 提交给串行队列的块一次执行一次,即.
..
public class Account { // MARK: Initializer // Custom initializer // MARK: Stored Properties let concurrentQueue: DispatchQueue = DispatchQueue( label: "concurrentQueue",
..
我最近在iOS设备上发现了一种奇怪的行为. 代码1: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
..
是否可以运行多个后台线程来提高iOS上的性能.目前,我正在使用以下代码在后台线程上发送50个网络请求,例如: dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ // send 50 network requests }); 编辑:
..