基于插件程序的 FFTW 重入

FFTW reentrancy in plug-in based programs

我正在开发跨平台应用程序 (Win / Mac / Linux)。此应用程序加载我无法控制的动态库插件,这些插件可能会做各种事情,主要是音频和图像处理。

其中一些插件可能会使用 FFTW 作为其实现细节的一部分。 (这不是一个假设的案例——我已经有三个)。 但是,根据文档,FFTW 的 fftw_plan 函数族是不可重入的——它们只能由单个线程调用。问题是我可以加载的一些插件可能会在他们自己创建的某个线程深处调用 fftw_plan。

我能做些什么来确保在那种情况下一切正常,还是我应该接受这最终会崩溃? (遗憾的是,将每个插件放在自己的进程中并不是我可以接受的解决方案)。

事实证明,FFTW 提供了 void fftw_make_planner_thread_safe(void) 功能,它确实确保插件能够 运行 在单独的线程中进行计划。

在程序开头调用即可。