我正在运行什么 GCD 队列(无论是主队列还是非队列)?

2023-11-27

我正在尝试编写一些线程安全的方法,所以我使用:

...
dispatch_queue_t main = dispatch_get_main_queue();
dispatch_sync(main,^{
  [self doSomethingInTheForeground];
});
...

但是,如果我在主线程上,则没有必要,并且我可以跳过所有这些调度调用,所以我想知道我当前在哪个线程上。我怎么知道这个?

或者,也许这样做并没有什么区别(在性能上)?

做这个比较可以吗?

if (dispatch_get_main_queue() == dispatch_get_current_queue()){...}

更新答案:

Apple 文档已更改,现在说“当从提交块的上下文之外调用时,如果从主线程执行调用,则此函数返回主队列。如果从任何其他线程进行调用,则此函数返回默认并发队列。”所以检查dispatch_get_main_queue() == dispatch_get_current_queue()应该管用。

原答案:

Using dispatch_get_main_queue() == dispatch_get_current_queue()行不通的。的文档dispatch_get_current_queue说“当在提交块的上下文之外调用时,此函数返回默认并发队列”。默认并发队列不是主队列。

[NSThread isMainThread]应该为你想要的工作。注意[NSThread isMainThread]但对于主队列以外的队列来说可能是正确的,例如,当调用dispatch_sync从主线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我正在运行什么 GCD 队列(无论是主队列还是非队列)? 的相关文章

  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 如何唤醒正在休眠的线程?

    我在加载事件中创建了一个线程 如下所示 Thread checkAlert null bool isStop false private void frmMain Load object sender EventArgs e checkAl
  • 使用 Thread.Sleep 等待的替代方法

    首先我不是在问同样的问题C Thread Sleep 的替代方案 https stackoverflow com questions 5450353 c sharp alternative to thread sleep or C 中 Th
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • BigQuery 未显示链接的 Firebase Analytics 事件日志的任何数据集

    我将我的帐户链接到 Big Query 但 Firebase Analytics 事件不会自动加载到 BigQuery 中 显示 未找到数据集 警告 我的工作进度附在下面 请查收 I have getting firebase Analyt
  • 使用 async/await 抛出和捕获异常的正确方法

    全部请拿下面的二维码 Task
  • Objective-C 中是否有相当于 C++ 动态转换的功能?

    如果我有两个类 子类和超类 SuperClass super new SuperClass SubClass sub new SubClass SubClass sub pointer The nice one line cast belo
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 临时表是线程安全的吗?

    我正在使用 SQL Server 2000 它的许多存储过程广泛使用临时表 数据库的流量很大 我担心创建和删除临时表的线程安全性 假设我有一个存储过程 它创建了一些临时表 它甚至可以将临时表连接到其他临时表等 并且还可以说两个用户同时执行存
  • UITabBarController 为 TabBar 的每个 ViewController 提供不同的 Storyboard 文件

    我的团队正在开发一个具有 UITabBarController 的应用程序 我们正在使用 Storyboard 来开发界面和流程 由于我们是一个团队 所以我们不能将所有流程放在一个故事板中 因为这会导致与 SVN 同步出现问题 所以 解决方
  • 核心数据 iCloud 同步中的关系完整性和验证

    考虑以下简单的实体模型 实体 A 与实体 B 具有一对一关系 称为b 实体 B 具有逆对一关系 称为a 这两种关系都不是可选的 A B b lt gt a 假设我们有两个设备 1 和 2 开始完全同步 每个对象都有一个 A 类对象和一个 B
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 如何呈现半屏模态视图?

    我有一个 UIViewController 当按下按钮时 我想要一个半屏视图向上滑动 其中有一个 UIPicker 我在 IB 中使用 UIPicker 和带有 完成 取消 按钮的 UIToolBar 制作了一个 UIView 我怎样才能做
  • FileSystemWatcher 在队列中丢失文件

    我写了一个FileSystemWatcher为每个文件调用一次 pgm 但我的一些文件丢失了 我只用 10 11 个文件测试了代码 文件的删除会被正确记录 但创建不会被正确记录 某些文件未记录 我的 TASK 实施可能存在问题吗 或者有什么
  • 比较具有相同值但顺序不同的两个数组

    我有 2 个 nsarray 具有相同的值但顺序不同 NSArray array1 0 1 2 3 NSArray array2 2 3 1 0 我需要一种方法来确定两个数组是否具有不同顺序的相同值 Kind of BOOL isSameV
  • Netty UDP 服务器中的线程未同时执行

    我正在分析的代码使用 Netty NioDatagramChannelFactory 创建 UDP 服务器 它创建一个线程池 ExecutorService threadPool Executors newCachedThreadPool
  • MPMediaItemPropertyAssetURL 仅针对 iPhone 5s 返回 null

    我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url 以便我可以将音乐文件从用户 iPhone itunes 音乐库复制到文档文件夹进行处理 但在 iPhon
  • 如何在 Mac 上禁用屏幕保护程序/显示器睡眠

    有没有办法用可可禁用屏幕保护程序和显示器睡眠 OSX 10 8 中已弃用 UpdateSystemActivity OverallAct 的使用 现在推荐的方法是通过以下调用来阻止它 IOPMAssertionCreateWithName
  • 从子线程绘制到窗口

    我的应用程序从工作线程绘制图形已有 10 多年了 而且我从未遇到过任何问题 工作线程吸引到我的HWND 由主线程创建 如下所示 hdc GetDC hwnd SetDIBitsToDevice or StretchDIBits Releas

随机推荐

  • Flask SQLAlchemy 设置动态 URI

    我有一个在 WSGI 下提供的 Flask 应用程序 其中数据库 URI 随着时间的推移而变化 每两个小时 URI 就会切换到另一个数据库 我利用这段时间填充一个数据库 而另一个数据库则为应用程序提供数据 我很难弄清楚如何最好地配置会话 以
  • 如何对文件执行 SHA1 哈希?

    如果我有一个文件想要监视任何更改 除了查看文件日期戳等 我如何对其内容执行 SHA1 哈希 I think这就是 GIT 所做的 所以我只想学习如何做 using FileStream stream File OpenRead C File
  • z-index 和 Javascript 事件

    我有几个彼此重叠的 div 具有不同的 z index 值 浏览器的默认行为似乎是触发绑定到最顶部 z index div 的事件 IE 我有多个onclick每个 div 都有一个 但当单击该区域时只有顶部的一个被触发 有没有一种方法可以
  • MVVM - RaisePropertyChanged 将代码变得一团糟

    MVVM 新手 请原谅我的无知 我认为我使用它是正确的 但我发现我的 ViewModel 有太多这些 RaisePropertyChanged SomeProperty 每次我设置一个属性时 我都必须提高那个该死的属性的变化 我怀念那些我可
  • 如何告诉 Proguard 混淆类名

    我希望混淆类名 我在 Proguard cfg 中有这一行 keepclasseswithmembers class public static
  • 使用 Spring 加载属性(通过系统属性)

    我的问题如下 I have server properties针对不同的环境 这些属性的路径是通过名为的系统属性提供的propertyPath 我该如何指导我的applicationContext xml加载给定的属性propertyPat
  • 什么是头文件和库文件? [复制]

    这个问题在这里已经有答案了 可能的重复 头文件和库有什么区别 谁能告诉我头文件和库文件的实际含义是什么以及它们的区别 例如 我们在程序中包含扩展名为 h 的头文件 它只是定义 但实际的实现是在库文件中定义的 这是在链接阶段完成的 这就是人们
  • C# 中 ++i 与 i += 1 有性能差异吗?

    i a 应等于 i i a 在 a 1 的情况下 据说它的效率不如 i 因为它涉及更多的内存访问 或者编译器会让它与 i 完全相同吗 答案很简单 C 编译器将 C 源代码转换为 IL 操作码 没有专用的 IL 操作码可以执行与 运算符等效的
  • 存储为 BINARY XML 时 Oracle XMLType 有多大

    Oracle 文档声称它将 XMLType 存储为 BINARY XML 比存储为 CLOB 更紧凑 但是我如何知道二进制 xml 占用了多少空间呢 CREATE TABLE t x XMLTYPE XMLTYPE x STORE AS B
  • logback - 重新映射特定记录器的日志级别

    我有一个 logback 配置 其中有一个带有阈值过滤器的附加程序
  • 如何在react中设置cookie?

    本来我是用下面的ajax来设置cookie的 function setCookieAjax ajax url Web Servlet setCookie contentType application x www form urlencod
  • 使用 Javascript 将 XML 转换为 CSV

    我正在寻求一些帮助 尝试将从 Amazon Product API 检索到的 XML 转换为 CSV 逗号分隔值 格式 我在这里找到了类似的主题 XML 到 CSV 转换问题但它使用 PHP 我想使用 javascript 这是我所拥有的示
  • 模型 Score() 与 r2_score 之间的差异

    我正在训练 Linear Regression 分类器并尝试衡量其预测准确性 from sklearn metrics import r2 score from sklearn linear model import LinearRegre
  • Pandas Dataframe 滚动两列和两行

    我得到了一个包含两列的数据框 其中包含经度和纬度坐标 将 pandas 导入为 pd values Latitude 0 47 021503365600005 1 47 021503365600005 2 47 02150336560000
  • 在 MVC 3 Razor 中显示上传的图像

    好吧 这个新手在显示上传到服务器的图像时犯了一些错误 model public class Person public int ID get set public string Name get set public string Imag
  • 如何在模态对话框中设置输入值?

    我正在研究 添加链接 功能 为此我正在使用来自 Twitter Bootstrap JS 的模态插件 在主页上只有 链接 字段需要填写 当用户单击 添加链接 按钮时 会弹出一个模式 用户会看到填写 3 个字段的完整表单 链接 标题 标签 但
  • 找到接口 org.apache.poi.util.POILogger,但类是预期错误

    public String readExcel String columnname String UserType try FileInputStream file new FileInputStream path SuppressWarn
  • require() 实际上返回什么,文件还是函数

    例如 我有 profile js var EventEmitter require events EventEmitter var https require https var http require http var util req
  • Java BigDecimal:四舍五入到最接近的整数值

    我需要以下结果 100 12 gt 100 00 100 44 gt 100 00 100 50 gt 101 00 100 75 gt 101 00 round or setScale 我该怎么办 您可以使用setScale 将小数位数减
  • 我正在运行什么 GCD 队列(无论是主队列还是非队列)?

    我正在尝试编写一些线程安全的方法 所以我使用 dispatch queue t main dispatch get main queue dispatch sync main self doSomethingInTheForeground