- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
苹果的文档说,dispatch_get_global_queue()是并发队列,dispatch_sync是串行的意思,那么任务是异步处理还是同步处理?
最佳答案
您对什么是队列以及异步与同步的含义感到困惑。
队列是可以在其上运行 block 的实体。这些可以是串行的或并发的。串行意味着如果你按照 A、B、C、D 的顺序放置 block ,那么它们将被执行 A,然后是 B,然后是 C,然后是 D。并发意味着这些相同的 block 可能以不同的顺序执行,并且可能甚至不止一个同时运行(显然,假设您有多个要运行的内核)。
然后是异步与同步。 async 的意思是当你调用 dispatch_async
时,它会立即返回并且 block 会在队列中排队。同步意味着当您调用 dispatch_sync
时,它只会在 block 执行完毕后返回。
因此,为了完整回答您的问题,如果您 dispatch_sync
进入全局并发队列,那么该 block 将运行,可能与该队列上的其他 block 并行运行,但以同步方式 - 即它在 block 完成之前不会返回。
关于ios - dispatch_sync(dispatch_get_global_queue(xxx), task) 是同步还是异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822473/
请考虑以下代码: - (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(@
我是一名优秀的程序员,十分优秀!