草庐IT

grand-central-dispatch

全部标签

ios - 了解 dispatch_sync 例程

这个问题在这里已经有了答案:Whyisthisdispatch_sync()callfreezing?(2个答案)Howtousebackgroundthreadinswift?(17个答案)关闭6年前。我正在学习GCD。请考虑以下代码:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{dispatch_sync(dispatch_get_main_queue(),^{NSLog(@"Helloworld");});/*Anot

ios - 从视频中获取视频缩略图需要时间和从视频制作新帧时表格 View 滚动卡住

我正在尝试从视频中获取缩略图,当tableview重用单元格时,tableview滚动卡在从视频中生成图像到目前为止我已经尝试使用此代码dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{UIActivityIndicatorView*indicatorG=[[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];dispatch_async(disp

ios - 为什么我不能停止 dispatch_async 串行队列中的计时器?

这只是一个实验代码,但我很困惑,因为代码没有按我预期的那样执行。代码如下:-(void)viewDidLoad{[superviewDidLoad];self.myQueue=dispatch_queue_create("com.maxwell.timer",NULL);dispatch_async(self.myQueue,^{self.timer=[NSTimertimerWithTimeInterval:1repeats:YESblock:^(NSTimer*_Nonnulltimer){NSLog(@"Hey!");}];[[NSRunLoopcurrentRunLoop]ad

iphone - 在 iOS 中等待多个事件?

iOS中Win32的WaitForMultipleObjects函数等价于什么?这大概就是我想要的:NSCondition*condition1;NSCondition*condition2;NSCondition*condition3;wait_for_conditions([NSArrayarrayWithObjects:condition1,condition2,condition3,nil],^{//Somecodewhichmustbeexecutedwhenallconditionswerefired});//insomeotherplacesofprogram:[cond

ios - CoreData 保存在 iPad Mini 上的 GCD 后台队列挂起

我有一个单例类,它使用GCD(GrandCentralDispatch)队列在后台将JSON对象保存到CoreData数据库。这在大多数情况下都能完美运行,但在iPad2和iPadMini设备上,我遇到了一些进程卡住问题。我的设置非常简单。我有一个设置为串行运行的后台调度队列(backgroundQueue),并且我有一个单独的NSManagedObjectContext实例用于后台队列。当我想将某些内容保存到数据库时,我调用开始保存过程的方法,在该方法中,我使用dispatch_async在后台线程上调用我的保存逻辑。所有处理逻辑运行后,我保存后台MOC,并使用NSManagedOb

ios - dispatch_once 与静态

我目前正在为我的应用程序编写一个帮助程序类。助手类将返回全局可访问的变量。我创建了一个简单的助手,如下所示:@interfaceMyHelper:NSObject{}+(id)sharedHelper;+(NSMutableArray*)employers;+(id)sharedHelper{staticMyHelper*sharedHelper=nil;staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{sharedHelper=[[selfalloc]init];});returnsharedHelper;}+(NSM

ios - 用于指定函数 block 是异步还是同步的模式

是否有一种模式来指示函数的block是同步调用还是异步调用,例如:-(void)processImage:(UIImage*)imageonComplete:(void(^)(NSError*__error))onComplete;是一个同步处理图像然后在完成时调用onComplete(error)的函数,但是:-(void)downloadResourceIDs:(NSArray*)imageIDsonComplete:(void(^)(NSError*__error))onComplete;是一个函数,它将异步下载数组中指定的资源并在下载完所有内容后调用onComplete(err

ios - UIKit 和 GCD 线程安全

许多帖子都说UIKit完全不是线程安全的。现在,在GCD的Apple文档中,我们可以读到它是非线程安全的绘图。那么像这样的代码就可以了吗:dispatch_async(^{//dosomeworkif(!self.window.rootViewController.presentedViewController&&)[self.window.rootViewControllerclass]==anotherClass){dispatch_async(dispatch_get_main_queue(),^{//dosomework});}}); 最佳答案

ios - 如何让一个 block 在延时后立即执行代码

我遇到了这个奇怪的错误..基本上我得到了这个block定义:UILabel*filterButtonLabel;void(^labelUpdater)(NSString*,id)=^(NSString*newLabelText,iddelegate){filterButtonLabel.text=newLabelText;//commandAdispatch_after(DISPATCH_SECONDS_FROM_NOW(1),dispatch_get_main_queue(),^{[delegateabortFilter];//commandB});};这个block是从工作队列中调

ios - 同步运行时如何使异步方法超时

这基本上就是我正在做的同步运行异步方法:这在调用一次时基本上有效,但在调用多次时,它最终会停留在while循环中并且永远不会收到信号。关于如何将计时器设置为在某个时间后最终超时的任何想法?__blockSomeClass*result=nil;dispatch_semaphore_tsemaphore=dispatch_semaphore_create(0);dispatch_queue_tqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0UL);dispatch_async(queue,^{[[SomeManag