基于插件的程序中的FFTW可重入性



我正在开发一个跨平台应用程序(Win/Mac/Linux(。这个应用程序加载我不控制的插件作为动态库,它们可以做各种事情,主要是音频和图像处理。

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

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

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

在程序开始时调用它就足够了。

最新更新