Swift多线程循环中变量累加异常及输出不稳定问题求助
Swift多线程循环中变量累加异常及输出不稳定问题求助
各位大佬好,我最近在啃Swift的同步/异步多线程逻辑,写了一段测试代码,结果碰到了头疼的问题:变量累加没按预期完成,循环的执行次数每次都不一样,输出结果更是次次都变,完全摸不着规律。
先贴一下我的测试代码:
var mainAsync: Int = 1 var queueAsync: Int = 10 var queueAsyncTwo: Int = 20 var mainAsyncTwo: Int = 30 let queue = DispatchQueue(label:"com") DispatchQueue.main.async { for i in 0..<10 { mainAsync += 1 } } queue.async { for i in 0..<10 { queueAsync += 1 } } queue.async { for i in 0..<10 { queueAsyncTwo += 1 } } for i in 0..<10 { mainAsyncTwo += 1 } print("\(mainAsync),-- \(queueAsync),-- \(queueAsyncTwo),--\(mainAsyncTwo)")
我原本预期的输出是:10,-- 20,-- 30,-- 40
但实际运行起来每次结果都不一样,比如:
1,-- 19,-- 20,--401,-- 20,-- 22,--401,-- 20,-- 25,--40
我之前还试着加了print(Thread.current)来查看线程情况,结果也没法准确反映循环的实际执行次数,真是搞不懂哪里出问题了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

