Быстрая последовательная очередь умирает во время выполнения - PullRequest
0 голосов
/ 19 декабря 2018

В моем приложении у меня много задач по математике.Если я запускаю эту задачу в основной очереди, я замораживаюсь на несколько секунд после каждого вызова задачи, но она работает.Если я запускаю задачу в другой очереди - из какой-то случайной итерации он ничего не делает.Если я запускаю код в основной очереди, я получаю отладочное сообщение на каждой итерации, в другой очереди - я не получаю никого после случайной итерации.Похоже, очередь умирает по ряду причин.Использование процессора и памяти не меняется и остается на уровне 50-70%.Я думаю о бесконечном цикле, тупике или чем-то похожем по функции, но в основной очереди он всегда работает нормально.Что не так?

class MyClass {
let serialQueue = DispatchQueue(
    label: "com.notrealcompany.hardMathematics", 
    qos: .userInteractive
)

func doStuff() {
    serialQueue.async {
        node.getArea()
        debugPrint("get area call")
    }
}

serialQueue - переменная экземпляра, но ситуация не меняется.

1 Ответ

0 голосов
/ 19 декабря 2018

Похоже, что serialQueue освобождается, когда метод, в котором находится ваш код, возвращается.Попробуйте переместить объявление serialQueue в переменную экземпляра вместо локальной переменной.

class MyClass {
    let serialQueue = DispatchQueue(
        label: "com.notrealcompany.hardMathematics", 
        qos: .userInteractive
    )

    func doStuff() {
        serialQueue.async {
            node.getArea()
            debugPrint("get area call")
        }
    }
}
...