【问题标题】:Jack audio kit API thread synchronization杰克音频套件 API 线程同步
【发布时间】:2015-04-21 20:02:07
【问题描述】:

Jack kit API 使用来自其(实时)线程的回调来处理音频数据:

jack_set_process_callback (client, process, 0);
...

int process(jack_nframes_t nframes, void *arg)
{
    ...
}

如何以线程安全的方式将一些参数传输到此回调(当然,没有阻塞操作)?我不仅需要传递参数,还需要重新初始化音频过滤对象,因此我需要找到基于事件的解决方案。

【问题讨论】:

  • 我不仅需要传递参数,还需要重新初始化音频过滤对象,所以我需要找到基于事件的解决方案。

标签: multithreading thread-safety jack


【解决方案1】:

在您的主线程中分配您的事件,并使用环形缓冲区 (jack/ringbuffer.h) 将指向该事件的指针发送到您的音频线程。使用第二个环形缓冲区将指针发送回主线程,以便释放内存。

http://harryhaaren.blogspot.com/2011/11/tutorial-jack-ringbuffers.html 有一个很好的简单示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2018-06-07
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2016-10-14
    相关资源
    最近更新 更多