У меня есть c ++ API, который подключен через файл моста. Внутри этого API есть функция, которая, к моему сожалению, имеет бесконечный цикл, который ожидает поступления данных.
Я вызываю эту функцию, когда пользователь нажимает кнопку пуска, через:
workItem = DispatchWorkItem {
foo()
}
DispatchQueue.global(qos: .background).async(execute: workItem!)
Функция заполнения переменных внутри алгоритма c ++, в частности, массивы предоставленных данных.
Когда пользователь нажимает кнопку остановки, я прекращаю эту тему с помощью:
self.workItem?.cancel()
Единственная проблема в том, что он не убивает этот поток, а очищает память. Я знаю это, потому что когда пользователь снова нажимает кнопку запуска, он продолжает работать со старыми данными в массивах c ++
Есть ли способ убить этот конкретный поток и очистить память, чтобы при каждом запуске / остановке пользователь запускал новый сеанс