迅速-未分配异步任务和释放的指针

时间:2018-10-26 06:38:24

标签: ios swift

我有一个关于检查和设置数组中元素的简单问题,但我想在多个线程的异步任务中做到这一点。

        override func viewDidLoad() {
          super.viewDidLoad()
          test()
        }


        let group_dis = DispatchGroup()
        var sum : [Int] = [Int] (repeating: 0, count: 10_000)
        func test() {
            self.group_dis.enter()
            f1(str: "thread 1", min: 0, max: 5000)

            self.group_dis.enter()
            f1(str: "thread 2", min: 100, max: 2699)

            self.group_dis.enter()
            f1(str: "thread 3", min: 5301, max: 9999)

            self.group_dis.wait()
            print(self.sum)
        }
        func f1(str: String, min : Int,  max : Int) {
            let q = DispatchQueue.global(qos: .userInteractive)
            q.async {
                print("running ..... \(str) ")
                for i in min..<max {
                    if (self.sum[i] < i) {
                        self.sum[i] = i
                    }
                }
                self.group_dis.leave()
            }
        }

错误: TestDispatchQueueGroup(67208,0x700000c2c000)malloc: *对象0x7fb4e1022800的错误:正在释放的指针未分配 TestDispatchQueueGroup(67208,0x700000c2c000)malloc:* 在malloc_error_break中设置一个断点进行调试

我知道它已崩溃,因为在多个线程上访问内存单元时发生冲突。 但这是对我的大型项目的测试,我试图找到一种在同一阵列上执行并行任务的解决方案。

感谢您的任何建议。

enter image description here

0 个答案:

没有答案