gpt4 book ai didi

ios - 如何在swift 4中使用线程

转载 作者:行者123 更新时间:2023-12-01 22:05:57 29 4
gpt4 key购买 nike

我正在尝试使用 ios CoreAudio 制作自己的音频播放器swift 中的框架.它至少需要两个线程。一个线程解码音频文件,另一个线程提供硬件解码数据。实际上,传递给硬件的第二个线程是来自操作系统的回调,所以我不在乎我只需要在调用回调函数时传递所需的数据。
原样
我用了DispatchQueue对于解码,实际上它运行良好。如下:

DispatchQueue.global(qos: .background).async {
while(endOfFile) {
// do decoding
let res = ExtAudioFileRead(input, &frameCount,&convertedData)
}
}
问题
当我使用 DispatchQueue 时,CPU 使用率超过 100% .虽然我在播放器中只播放了一首 mp3 音乐,但手机却开始发热。我不知道出了什么问题。
问题
  • DispatchQueue有没有错误的使用方法?
  • 除了DispatchQueue,还有其他方法吗? ?
  • 最佳答案

    这不是一个好习惯。永远不要使用循环来等待某事,你的一些操作应该在它完成时通知它并使用完成处理程序。这种模式通常被称为 busy waiting这是快速释放设备电池电量的好方法。

    您应该使用 Completion Handler实现这种东西。

    Completion handlers are callbacks that allow a client to perform some action when a framework method or function completes its task. Often the client uses a completion handler to free state or update the user interface. Several framework methods let you implement completion handlers as blocks (instead of, say, delegation methods or notification handlers).



    关注 Apple documentation更多细节。

    关于ios - 如何在swift 4中使用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763214/

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