You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,--40
  • 1,-- 20,-- 22,--40
  • 1,-- 20,-- 25,--40

我之前还试着加了print(Thread.current)来查看线程情况,结果也没法准确反映循环的实际执行次数,真是搞不懂哪里出问题了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:14:43