grand-central-dispatch

    13热度

    1回答

    我一直在写一些代码,取代一些现有的: while(runEventLoop){ if(select(openSockets, readFDS, writeFDS, errFDS, timeout) > 0){ // check file descriptors for activity and dispatch events based on same } }

    2热度

    2回答

    在我的应用我添加CFMachPortRef(通过CFMachPortCreateRunLoopSource)的线程CFRunLoop 现在,我问我自己,可以在此使用GCD做?比方说,而不是产卵我自己NSThread并通过CFRunLoopAddSource事件端口添加创建CFRunLoopSourceRef它的运行循环,增加调度的runloop? 我认为这很可能不起作用,因为GCD的内部工作原理,

    13热度

    1回答

    我想知道使用POSIX调用如pthread_once()和sem_wait()或dispatch_ *函数会更好/更快,因此我创建了一个小测试并对结果感到惊讶(问题和结果在最后)。 在测试代码中,我使用mach_absolute_time()来定时调用。我真的不在乎,这是不是完全匹配纳秒;我正在比较这些值,因此确切的时间单位并不重要,只有区间之间的差异。结果部分的数字是可重复的,而不是平均值;我可

    3热度

    1回答

    比方说我运行在调度异步一些代码。 ..有没有办法终止它创建之前创建的线程?就像用户点击取消时一样 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //start doing something here.. break bofore it finishes?

    0热度

    1回答

    我有一个Cocoa应用程序,它侦听通知并将更新发布到由NSCollectionView监控的NSMutableArray。通知以大量发送,因此我正在考虑使用不同的队列来处理它们并相应地更新阵列。 现在我正在使用addObserverForName:object:queue:usingBlock来注册通知,并且它在我为队列指定[NSOperationQueue mainQueue]时正常工作(数组和

    1热度

    2回答

    我想在后台运行一个进程来生成一个字符串,然后在主线程中使用(发送到远程服务器)。代码在模拟器中工作正常,并且该字符串按预期记录了两次。 在设备(iPad,4.2和各种iPhone)上,每次使用EXC_BAD_ACCESS都会崩溃。看起来myString超出了范围,但是这似乎违背了使用相同原理的示例on Wikipedia。 的代码如下: dispatch_async(_queue, ^{ NS

    29热度

    2回答

    目前我使用NSThread缓存在另一个线程的图像。 [NSThread detachNewThreadSelector:@selector(cacheImage:) toTarget:self withObject:image]; 或者: [self performSelectorInBackground:@selector(cacheImage:) withObject:image];

    7热度

    2回答

    在iOS 4.0中通过Grand Central Dispatch加载图像(每个块)是否是一个好主意? (用于UITableView) 为什么Apple首选的runloop,如WWDC视频会话207和208所示?

    7热度

    3回答

    有没有办法模拟dispatch_apply()块中的break语句? 例如,每一个可可API我见过的处理列举块有一个“停止”参数: [array enumerateObjectsUsingBlock:^(id obj, NSUInteger i, BOOL *stop) { if ([obj isNotVeryNice]) { *stop = YES; // No more

    12热度

    2回答

    这是可能的,因为苹果公开源代码(libdispatch?)我有点困惑,可以如何使用这个。这就像一个带有API的库,任何应用程序都可以使用,或者Mac OS X内置的操作系统功能?可以单独建立“for”Mac和iPhone(使用iOS 4)的应用程序使用此库吗? 我假设你必须运行一个端口,以使gcc也与Apple引入的新语义兼容。