实时音频编程中的虚函数安全吗?
Are virtual functions safe in real-time audio programming?
由于需要避免音频故障,实时音频编程具有特殊的限制。具体来说,分配和释放内存,或以其他方式与操作系统交互,不应在音频线程中完成。
调用虚函数时,程序必须找到相关的虚table,查找指针,然后从指针调用函数。 这个过程实时安全吗?
是的,很好。虚函数调度就像写(*(obj->vtable[5]))(obj, args...)
一样。它不涉及任何未知或可能令人惊讶的复杂性的操作,如分配内存或 I/O.
实时系统不是由编程语言定义的,而是由 OS/hardware.
只要系统是实时的,执行的软件是deterministic,就会有实时性。关于你的问题,使用虚函数并不违反确定性。
另一个问题可能是延迟。您可能遇到的延迟量将由 OS、硬件和软件决定,但正如 Matt Timmermans 在他的回答中提到的那样,虚拟函数的开销很小,不会对延迟产生重大影响。
由于需要避免音频故障,实时音频编程具有特殊的限制。具体来说,分配和释放内存,或以其他方式与操作系统交互,不应在音频线程中完成。
调用虚函数时,程序必须找到相关的虚table,查找指针,然后从指针调用函数。 这个过程实时安全吗?
是的,很好。虚函数调度就像写(*(obj->vtable[5]))(obj, args...)
一样。它不涉及任何未知或可能令人惊讶的复杂性的操作,如分配内存或 I/O.
实时系统不是由编程语言定义的,而是由 OS/hardware.
只要系统是实时的,执行的软件是deterministic,就会有实时性。关于你的问题,使用虚函数并不违反确定性。
另一个问题可能是延迟。您可能遇到的延迟量将由 OS、硬件和软件决定,但正如 Matt Timmermans 在他的回答中提到的那样,虚拟函数的开销很小,不会对延迟产生重大影响。