gpt4 book ai didi

ios - dispatch_get_specific() 和 dispatch_queue_set_specific() 线程安全吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:47 25 4
gpt4 key购买 nike

我正在尝试结合使用 dispatch_queue_set_specific() 和 dispatch_get_specific() 方法来检查当前队列是否与目标队列相同。但是由于可以从多个线程调用此方法,因此我需要确保线程安全。所以,我的问题是这些方法是线程安全的。如果不是,我如何确保这里的线程安全?

我在目标队列上使用 dispatch_queue_set_specific() 设置数据,并使用 dispatch_get_specific() 比较当前队列上的数据,如果它们相同,我就在同一个队列上。

static inline (BOOL)is_current_queue(dispatch_queue_t queue) {
int key, data;
dispatch_queue_set_specific(queue, &key, &data, nil);
if (dispatch_get_specific(&key) == &data) {
return YES;
}
return NO;
}

最佳答案

Are dispatch_get_specific() & dispatch_queue_set_specific() thread safe?

对于并发库中的例程来说似乎很可能,但 documentation没有明确指出这一点——感谢 Apple 实际上提供了任何文档,大多数如果它现在被降级到他们的“文档文件”;-(

幸运的是,libdispatch 是开源的,可以查看 source确认它们是——它们锁定了关键部分。

HTH

顺便说一句,您的代码片段的第 4-8 行写得更好:

return dispatch_get_specific(&key) == &data;

关于ios - dispatch_get_specific() 和 dispatch_queue_set_specific() 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com