Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 与守护进程的高性能连续通信_Performance_Ipc_Hardware Interface - Fatal编程技术网

Performance 与守护进程的高性能连续通信

Performance 与守护进程的高性能连续通信,performance,ipc,hardware-interface,Performance,Ipc,Hardware Interface,我需要几个客户端程序立体声DSP音频发生器,以便能够在I2C总线上以大约16kB/s的数据速率与外部外设进行连续双向通信,每1ms更新一次,所有这些程序都在700MHz CPU上运行。程序需要同时访问才能读写,但我不在乎写时锁定 我设想一个守护进程来管理原始I2C通信,客户端音频程序通过以下IPC选项之一与守护进程通信: DBUS 伯克利/POSIX插座 内存映射文件 对于DBUS,我有性能问题,对于Berkeley/POSIX套接字,我不确定是否要处理多个客户机。由于守护进程通信必须与音频渲染

我需要几个客户端程序立体声DSP音频发生器,以便能够在I2C总线上以大约16kB/s的数据速率与外部外设进行连续双向通信,每1ms更新一次,所有这些程序都在700MHz CPU上运行。程序需要同时访问才能读写,但我不在乎写时锁定

我设想一个守护进程来管理原始I2C通信,客户端音频程序通过以下IPC选项之一与守护进程通信:

DBUS 伯克利/POSIX插座 内存映射文件 对于DBUS,我有性能问题,对于Berkeley/POSIX套接字,我不确定是否要处理多个客户机。由于守护进程通信必须与音频渲染在同一线程中进行,因此不发生锁定也很重要

内存映射似乎适合此任务。10个字节就可以了,输入需要4个字节,输出需要4个字节,告诉守护进程现在应该写入输出字节,告诉守护进程当前应该持续更新输入字节。但是,据我所知,内存映射依赖于操作系统的缓冲,因此我不确定如果我的守护进程在我的客户端应用程序处于读取操作的中间时更新输入字节会发生什么。
在我的场景中,进程间通信的最佳选项是什么

一次10个字节听起来非常小。你一定要有这么低的延迟吗?更大的缓冲区将使事情变得更简单,并增加计时可靠性的机会,而无需求助于试图提供实时保证的机制。是的,尽可能低的延迟非常重要。这是一个数字合成模块,每1ms计算一次音频块,它必须坐在模拟合成模块旁边,可以说模拟合成模块没有“延迟”。由于数据速率只有16kB/s,我需要在客户端可用时立即将字节推送到客户端。