gpt4 book ai didi

ios - swift 4 : kill executing thread with called c++ bridge function

转载 作者:行者123 更新时间:2023-11-30 11:32:37 25 4
gpt4 key购买 nike

我有 C++ API,它通过桥接文件连接。在这个 API 中,有一个函数,令我遗憾的是,它有无限循环等待数据到达。

当用户单击开始按钮时,我通过以下方式调用此函数:

   workItem = DispatchWorkItem {
foo()
}
DispatchQueue.global(qos: .background).async(execute: workItem!)

该函数填充 C++ 算法中的变量,特别是提供的数据数组。

当用户单击停止按钮时,我通过以下方式停止此线程:

self.workItem?.cancel()

唯一的问题是它没有杀死这个线程并清理内存。我知道这一点,因为当用户再次单击开始按钮时,它会继续使用 C++ 数组中的旧数据

有没有办法杀死这个特定的线程并清理内存,以便用户在每次启动/停止时启动新 session

最佳答案

就 GCD 而言,WorkItem Cancel 只不过相当于 dispatch_block_cancel

根据这个类比,已经开始执行的 block 不会停止。只有等待执行的工作项才可能被停止。

停止时,您可能必须手动撤消 WorkItem 实际执行的操作(如果它之前已经执行过)。

关于ios - swift 4 : kill executing thread with called c++ bridge function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50098787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com