C中实时音频/图形Linux应用程序线程间的队列/事件通信

C中实时音频/图形Linux应用程序线程间的队列/事件通信,c,event-handling,pthreads,ipc,real-time,C,Event Handling,Pthreads,Ipc,Real Time,我需要一些关于什么样的IPC和什么样的消息队列类型可能是适合我的特定情况(生产者/消费者、优先级和计时等)的建议 我正在用C for Linux(Ubuntu)开发一个实时音频/图形应用程序,它使用OpenGL和SDL图形、ALSA音频(MIDI)、POSIX pthreads和用于外围硬件的自定义库。目前有一个主线程和一个与外围设备通信的线程。主线程将主图形绘制周期与控制音频录制/播放的代码(或者更准确地说,为循环录制/播放设置的MIDI事件)结合起来 我需要将音频分离到自己的线程中,因为主线

我需要一些关于什么样的IPC和什么样的消息队列类型可能是适合我的特定情况(生产者/消费者、优先级和计时等)的建议

我正在用C for Linux(Ubuntu)开发一个实时音频/图形应用程序,它使用OpenGL和SDL图形、ALSA音频(MIDI)、POSIX pthreads和用于外围硬件的自定义库。目前有一个主线程和一个与外围设备通信的线程。主线程将主图形绘制周期与控制音频录制/播放的代码(或者更准确地说,为循环录制/播放设置的MIDI事件)结合起来

我需要将音频分离到自己的线程中,因为主线程当前没有严格计时(即,主绘制周期并不总是花费相同的时间来完成一个迭代,这取决于从一个迭代到下一个迭代绘制的内容),这会阻止音频循环的“播放”(触发MIDI事件)在时间上保持不变

音频线程需要严格计时,以确保录制/播放的一致性,并且需要从外围处理器线程接收触发事件(注意,可能有多个外围线程产生事件),但不要等待足够长的时间,以免干扰播放计时。外围线程发送的触发事件需要与音频线程同步,以便当用户触发音符的播放/录制时,它在正确的时间播放(即,播放音符时立即播放,或录制到录制循环中的正确位置)

音频线程将“draw”事件发送到图形线程(我猜它仍然是主程序线程),图形线程应尽快绘制它们,以便图形事件与音频播放事件同步-尽管图形线程不必像音频线程那样严格计时

我希望这足够清楚,让人们能够建议我应该尝试什么。我不太熟悉队列算法、阻塞、锁和互斥等,但我了解基本概念,因此如果有人能建议我应该研究哪种队列或消息传递算法,并链接到C语言中的任何示例/实现,那就太好了。非常感谢

我想看看。它在简化这些概念方面做得非常好。它本质上是一个神奇的传输层,可以为您排队,并且可以通过各种协议(IPC、TCP等)以各种拓扑进行排列。它还有很好的文档,可以在Windows和Linux中运行。任何语言都有一个重要的客户机库

我喜欢把它想象成尺蠖形的插座