我正在编写一个程序,它将发生许多动态生成的异步任务。为了读/写全局变量,我一直在while循环中使用等待锁(参见下面的1)。我觉得这可能效率不高,所以我想我可以在主线程中操纵全局变量(参见下面的2)。这实际上会更有效吗?
1。等待锁定示例
var writeLock = false
var someVar = 0
func someFunc() {
DispatchQueue.global().async {
while (self.writeLock) { } // Wait for lock
self.writeLock = true // Lock
self.someVar += 1 // Manipulate var
self.writeLock = false // Unlock
}
}
2。线程锁定示例
var someVar = 0
func someFunc() {
DispatchQueue.global().async {
// Access main queue
DispatchQueue.main.async {
self.someVar += 1 // Manipulate var
}
}
}