- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我从并发队列调用 dispatch_sync - 它会阻塞整个队列还是只阻塞那个执行线程?
最佳答案
dispatch_sync 会阻塞调用者线程直到执行完成,一个并发队列有多个线程所以它只会阻塞那个队列中的一个线程,其他线程仍然会执行。
Apple 对此是这样说的:
Submits a block to a dispatch queue for synchronous execution. Unlike dispatch_async, this function does not return until the block has finished. Calling this function and targeting the current queue results in deadlock.
Unlike with dispatch_async, no retain is performed on the target queue. Because calls to this function are synchronous, it "borrows" the reference of the caller. Moreover, no Block_copy is performed on the block.
As an optimization, this function invokes the block on the current thread when possible.
关于ios - 从并发队列调用 dispatch_sync - 它会完全阻塞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30837356/
请考虑以下代码: - (void)viewDidLoad { [super viewDidLoad]; dispatch_sync(dispatch_get_global_queue(
此代码阻塞了对 dispatch_sync 的调用。我是调度队列的新手。这会阻止什么原因? NSLog(@"%@",dispatch_get_current_queue()); NSLog(@"%@"
我有两个类,一个 View Controller 和另一个 (TwitterCrawler) 向 Twitter API 执行网络请求。我在加载 View Controller 时发出第一个网络请求,
以下代码中的死锁。为什么? dispatch_queue_t queue = dispatch_get_main_queue(); dispatch_async(queue, ^{ dispa
我正在研究 GCD 机制,我有几个问题。如果我的 Material 有误,请您纠正我,我将不胜感激。 1。问题) 据我所知,GCD 有 4 个具有不同优先级的全局并发队列。例如,当我们编写 DISPA
{ dispatch_queue_t myQueue = dispatch_queue_create("com.mycompany.myqueue", 0); dispatch_syn
是否可以杀死由于 dispatch_sync 而被锁定的线程?这是代码: dispatch_sync(q_, ^{ ... }); 这是锁定时的堆栈跟踪: #0 0x00007fff8d6995
我知道在串行队列上执行此操作会导致死锁,但我还没有发现任何提及在并发队列上执行此操作会导致死锁的内容。我只是想验证它不会死锁(它似乎不会,因为它只会阻塞队列中的一个线程,任务将在同一队列中的另一个线程
这个问题在这里已经有了答案: Why is this dispatch_sync() call freezing? (2 个答案) How to use background thread in s
我对读取共享资源时使用 dispatch_sync 有一些疑问。我在 Stack Overflow 上搜索了几个问题(例如:GCD dispatch_barrier or dispatch_sync?
我只是想确认为什么需要这样做。 我将此代码添加到 KIImagePager(一个 cocoapod)以加载应用本地的图像(默认代码从 url 加载图像)。 根据同事的建议,这是我的工作代码: disp
苹果文档说:(concurrencyProgrammingGuide,page49)重要提示:您永远不应从计划传递给函数的同一队列中执行的任务调用 dispatch_sync 或 dispatch_s
我知道这不是一个强有力的问题,但我必须弄清楚这个概念。 我定义了 myBlock 如下。 void(^myBlock)(void) = ^{ for(int i = 0;i < 10 ; i++
这是我需要做的。我希望 dispatch_sync 是使用 GCD 的最佳方式 我在 Appdelegate 的 applicationDidBecomeActive 回调中有一段临界区代码.. 我将
假设我从并发队列调用 dispatch_sync - 它会阻塞整个队列还是只阻塞那个执行线程? 最佳答案 dispatch_sync 会阻塞调用者线程直到执行完成,一个并发队列有多个线程所以它只会阻塞
我正在使用 dispatch_sync 执行一个 block ,并且该 block 已正确执行。但是这个 block 是在主线程上执行的。根据 Apple 文档: Serial queues (als
我遇到了一个场景,我有一个委托(delegate)回调,它可能发生在主线程或另一个线程上,直到运行时我才知道是哪个(使用 StoreKit.framework)。 我还有需要在回调中更新的 UI 代码
我最近在玩 UIDocument 并且混淆了 dispatch_sync/dispath_async 的概念 我有一个获取所有文档信息的方法 for (int i=0; i 所以 -openWithC
我有两个带有dispatch_sync的 block ,当第一个 block 结束时,我向用户显示窗口并开始运行第二个 block 。但在第二个 block 结束之前我不会单击屏幕上的任何按钮.. 看
我正在运行这段代码 dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ NSLog(@
我是一名优秀的程序员,十分优秀!