问题标签 [dispatch-async]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iPhone - Grand Central Dispatch 主线程
我一直在成功地使用我的应用程序中的大型中央调度,但我想知道使用这样的东西的真正优势是什么:
甚至
我的意思是,在这两种情况下,您都会触发一个要在主线程上执行的块,这正是应用程序运行的位置,这无助于减少负载。在第一种情况下,您无法控制块何时运行。我见过在你触发它们半秒后执行块的情况。第二种情况,类似
正确的?
我想知道你们怎么看。
objective-c - 使用 dispatch_get_main_queue() 是否意味着我的代码将在主线程上?
以下代码是否在主线程上运行?“主队列”是指主线程吗?
multithreading - 如何检查 dispatch_async 是否已完成执行块
我有一个关于 dispatch_async 的问题。我想确保队列完成执行,因为我需要返回一个仅在块完成时获得的值。
当前返回值将为零,因为调用 return 函数时 dispatch_async(dispatch_get_main_queue(), ^{..} 尚未执行。我如何确保在调用 return 之前完成?谢谢!
dispatch-async - dispatch_async 阻塞到串行队列是否保持顺序?
当我通过 dispatch_async 将两个块提交到串行队列中时,它是否确保第二个在第一个之后运行:
- dispatch_async(serial_queue, b1);
- dispatch_async(serial_queue, b2);
我们能保证 b1 在 b2 之前运行吗?
以下是完整的源代码部分:
我们可以保证 m_value == COUNTER 总是吗?谢谢
ios - IOS dispatch_async 视图会消失
我正在使用 dispatch_async 和一个块每 3 秒左右检索一次服务器数据。处理视图消失或用户关闭程序的方法是什么?
它会是一个布尔标志,异步块不时检查吗?如果是这样,如果视图在异步块处于休眠状态时退出怎么办?
testing - 像 dispatch_async 这样的代码的单元测试。
需要对以下代码进行单元测试,dispatch_async 表示代码不会按应用逻辑顺序执行,请问如何使其及时运行?
谢谢你。
iphone - 在 dispatch_async 中更新 UIProgressView
我让我的应用程序使用 dispatch_async 进行 google API 调用并获取我正在解析的 JSON 结果。我想实现一个进度视图,以便它根据我解析的 JSON 响应的结果数量进行更新。
所以我的 dispatch_async Google API 调用是:
我的fetchResultsForGoogle: withObject:
方法解析结果,我想在屏幕上显示处理结果的数量的进度视图。所以在fetchResultsForGoogle...
方法中,我想要:
但我认为理解当 dispatch_async 在另一个线程上执行时,如果不使用dispatch_async(dispatch_get_main_queue()
. 为了解决这个问题,我尝试了两种实现方法(如下所示),但这些方法中的任何一种都不适合我(progressView
并且progressViewLabel
根本不更新)。
计划A:
B计划:
在fetchResultsForGoogle...
方法内:
因此,非常感谢有关正确实施此方法的任何想法或提示!
编辑解决它
我修复了它。在dispatch_async
块中,我将它传递给performSelectorOnMainThread
. 因此,当我尝试在 中更新进度视图时performSelectorOnMainThread
,UI 将dispatch_async
在完成之前更新。
因此,我将其更改为块performSelectorInBackgroundThread
内部dispatch_async
,现在以performSelectorOnMainThread
应有的方式更新 UI。
我对这一切都很陌生,但我很高兴我仍在学习新事物。
ios - 从 iOS 中的不同线程调用控制器方法
我正在尝试从在不同线程中运行的音乐渲染函数调用此方法。方法在里面InstrumentGridViewController
。
这就是我调用该方法的方式:
但我收到了这个警告:
当我尝试运行时:
我确定该方法在那里,所以我真的不明白为什么会发生这种情况。
编辑:H2CO3 说我应该在当前运行的实例上调用 stopPlayback 方法。任何想法我怎么能做到这一点?
multithreading - dispatch_async 不能与后台线程一起工作
我要从数据库加载一些重要内容并显示在屏幕上。但同时有一个“plist to Database”保存的后台任务正在进行中。因此 UI 卡住了。
我使用的代码如下,
用于数据库获取和 UI 更新方法
我将“Plist to DB”方法称为
这里taskBlock
是繁重的数据库获取,completionBlock
是 UI 更新。
如果我在一段时间后(方法完成后)调用此方法,syncData
那么它会顺利更新。但如果它还没有完成,那么 UI 就会卡住。
似乎是线程死锁的问题,但对此尚不清楚
请帮忙 !!
ios - MKOverlay 需要很长时间才能从异步调用中显示
我正在使用 MKMapView 和 MKPolyline 来显示路线形状。当在我的 MKMapView 上放置注释并且已经存在另一个注释时,它将异步向我的路线提供者发送路由调用并添加形状覆盖。
这就是问题所在。如果我对请求使用主线程,它将在请求进行时冻结 MKAnnotation 下降,但当它返回时,它会很好地显示覆盖。相反,如果我将请求分派到异步队列,则注释删除中不会冻结,并且当异步调用完成时,它会添加叠加层,但 MapView 需要一段时间才能意识到这一点并实际绘制叠加层。有时需要20秒。这是代码。
实际路线计算在这里:
如果我使用上面的代码并注释掉 async 指令,则需要相同的时间来处理它,这会引起烦人的冻结,但是会立即绘制覆盖层:
知道为什么 MKMapView 需要一段时间才能意识到它需要在异步完成时绘制叠加层吗?
谢谢奥雷里奥