杰克音频套件 API 线程同步

Posted

技术标签:

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

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

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

int process(jack_nframes_t nframes, void *arg)

    ...

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

【问题讨论】:

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

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

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

【讨论】:

以上是关于杰克音频套件 API 线程同步的主要内容,如果未能解决你的问题,请参考以下文章

线程同步

系统API函数实现多线程及线程同步

线程同步API

使用Win32 API实现生产者消费者线程同步

线程同步

XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)