使用主线程来同步/锁定变量

时间:2017-08-10 11:17:38

标签: ios swift multithreading locking

我正在编写一个程序,它将发生许多动态生成的异步任务。为了读/写全局变量,我一直在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
                }
        }
}

0 个答案:

没有答案