gpt4 book ai didi

ios - 在 Swift 中创建线程安全数组

转载 作者:行者123 更新时间:2023-11-30 12:54:31 24 4
gpt4 key购买 nike

我在 Swift 中遇到线程问题。我有一个数组,里面有一些对象。通过委托(delegate),该类大约每秒都会获取新对象。之后我必须检查对象是否已经在数组中,所以我必须更新对象,否则我必须删除/添加新对象。

如果我添加一个新对象,我必须首先通过网络获取一些数据。这是通过 block 的handelt。

现在我的问题是,如何同步这个任务?

我尝试过dispatch_semaphore,但是这个会阻塞UI,直到阻塞完成。

我还尝试了一个简单的 bool 变量,它检查当前 block 是否已执行并同时跳过比较方法。

但这两种方法都不是理想的。

管理数组的最佳方法是什么,我不想数组中有重复的数据。

最佳答案

Swift 更新

推荐的线程安全访问模式是使用调度barrier:

let queue = DispatchQueue(label: "thread-safe-obj", attributes: .concurrent)

// write
queue.async(flags: .barrier) {
// perform writes on data
}

// read
var value: ValueType!
queue.sync {
// perform read and assign value
}
return value

关于ios - 在 Swift 中创建线程安全数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40582967/

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