grand-central-dispatch相关内容

在GCD(大型中央调度)中创建create dispatch_queues的数量是多少?

Mike Ash撰写了一篇有关Swift内置的轻量级通知系统的精彩文章:(基本思想是创建可以“监听"对象,即在状态发生某些变化时调用回调.为了使其具有线程安全性,创建的每个对象都拥有自己的dispatch_queue. dispatch_queue仅用于门控关键部分: dispatch_sync(self.myQueue) { // modify critical state in ..
发布时间:2020-11-20 05:06:44 其他开发

有什么理由不在大中央调度队列中使用睡眠吗?

我想让队列在循​​环时等待一小段时间.我正在考虑我的选择,并且正在测试暂停恢复队列,但这似乎需要几个活动部分.因此,我正在考虑改为使用睡眠或非睡眠状态.那更多的是一般的线程功能,并且想知道我是否应该避免使用睡眠,而是坚持使用GCD选项来使队列暂停. 我找到了一个相关的问题,但该回答表明他只是缺少一个包含.是否有将睡眠呼叫与GCD队列混在一起的问题? iphone-在Grand Cent ..
发布时间:2020-11-20 05:06:41 移动开发

风险评估:使用Pthread(相对于GCD或NSThread)

一位同事最近建议我使用pthreads代替GCD,因为它“更快".我不同意它的速度更快,但是pthreads的风险是什么? 我的感觉是,它们最终将不会像GCD那样不受白痴的困扰(我的团队是50%的白痴). pthread很难正确吗? 解决方案 GCD和pthreads都是异步进行工作的方式,但是它们有很大的不同.对GCD的大多数描述都是从线程和线程池的角度来描述它的,但是正如DrPi ..
发布时间:2020-11-20 05:06:31 移动开发

如何替换不赞成使用的方法dispatch_get_current_queue()?

我正在iOS 5中使用xmppframework开发聊天应用程序;效果很好. 但是我将Xcode更新为4.5.1,将iOS 5更新为iOS 6,将Mac OS更新为10.7.5,由于弃用问题,该项目无法正常工作.我将iOS 6中的所有方法替换为新方法,除了以下一种方法: dispatch_get_current_queue() 如何在iOS 6中替换此方法? 解决方案 ..
发布时间:2020-11-20 05:06:21 移动开发

为GCD通话编写宏吗?

我想为GCD调用创建一个宏,例如: dispatch_async(dispatch_get_main_queue(), ^{ stuff.... }); 宏可能看起来像这样: main(^ {...})? 不确定如何编写.有什么建议吗? 谢谢 解决方案 您可以定义如下宏: #define ASYNC(...) dispatch_async(dispatc ..
发布时间:2020-11-20 05:06:18 移动开发

如何将计时器移到后台线程

我的应用程序中目前有两个NSTimer计时器,它们负责获取数据和更新UI.最近我注意到,当计时器运行时,我的UI性能很差,例如,用户无法很好地滚动UITableview或根本无法滚动.我在其他地方读过,可以将计时器推入不同的运行循环中,这可能会有所帮助.这是我的计时器现在的样子: let aSelector : Selector = "updateLocation" timer = NSTi ..
发布时间:2020-11-20 05:05:12 移动开发

OperationQueue.main与DispatchQueue.main

当您需要在联网任务或操作的完成块中的主线程上执行某些操作时,哪种方法最合适?为什么?: OperationQueue.main.addOperation DispatchQueue.main.async 解决方案 有关这两种队列之间的区别的详细信息,请参阅Lion的答案. 这两种方法都行得通.但是,当需要更高级的计划(包括依赖项,取消等)时,通常需要NSOperation.所 ..

DispatchSourceTimer,Timer和asyncAfter之间的区别?

我正在努力了解 DispatchSourceTimer 和 asyncAfter (对于我来说,排定需要每X秒运行一次的任务的时间,尽管了解计时器的差异可能对有用))(还是除了列出的计时器之外,Swift中还有另一种(更有效的)调度机制?). Timer需要在其开始的当前队列上有一个活动的运行循环. DispatchSourceTimer不需要. Timer可防止CPU进入空闲状态.这是否也 ..
发布时间:2020-11-20 05:04:02 移动开发

默认情况下,CABasicAnimation是否在主线程或后台线程中运行

这比编码更像一个概念查询.我有一个自定义活动指示器,一个自定义视图.用户将拥有的唯一公共API是init(onFrame frame: CGRect),startAnimating()和stopAnimating(). 所以,我想在startAnimating方法中知道是否应该创建一个线程(无论是main还是DispatchQoS)来运行动画. 此外,如果我不将动画代码放入线程中,它将 ..
发布时间:2020-11-20 05:03:54 移动开发

从com.apple.main-thread(线程1)入队iOS |斯威夫特4.1

上面发生了什么: 从接收到的用户数据数组初始化领域模型. 在后台线程中的领域数据库中一次编写所有模型. 如果通过创建副本,Realm模型已经存在,则会对其进行更新. 任何人都可以在这里指导我有关我做错了什么. 解决方案 我遇到了类似的问题.在这里,您可能正在从其他线程访问领域对象.例如:您可以使用调度队列,但是更有可能在另一个线程中声明您要访问的对象.您可以在任何线程中都有 ..
发布时间:2020-11-20 05:01:41 移动开发