2

我想在线程中使用 fftw3。但是粘贴在http://codepad.org/lIjdGF5z的代码会导致“双重释放或损坏”错误。如何正确调用线程中的 fftw3 例程。谢谢!您可以通过命令“g++ test.cpp -lfftw3_threads -lfftw3 -lboost_thread”编译代码

4

1 回答 1

4

我相信调用fftw_plan_dft_2d是不可重入的,这意味着它不能同时在多个线程中调用,即使你正在创建不同的计划。唯一线程安全的 fftw 函数是fftw_execute根据文档线程安全页面第 2 段的变体。

此外,正如评论中提到的 Paul R.,您应该只在开始时创建一次计划,然后一遍又一遍地使用它们。它会快得多。此外,根据线程安全文档页面的第 3 段,您可以在多个同时调用fftw_execute. 因此,如果您的变换大小相同,则所有线程只需要一个计划。

于 2013-01-14T14:36:25.160 回答