我想在线程中使用 fftw3。但是粘贴在http://codepad.org/lIjdGF5z的代码会导致“双重释放或损坏”错误。如何正确调用线程中的 fftw3 例程。谢谢!您可以通过命令“g++ test.cpp -lfftw3_threads -lfftw3 -lboost_thread”编译代码
问问题
3147 次
1 回答
4
我相信调用fftw_plan_dft_2d
是不可重入的,这意味着它不能同时在多个线程中调用,即使你正在创建不同的计划。唯一线程安全的 fftw 函数是fftw_execute
根据文档线程安全页面第 2 段的变体。
此外,正如评论中提到的 Paul R.,您应该只在开始时创建一次计划,然后一遍又一遍地使用它们。它会快得多。此外,根据线程安全文档页面的第 3 段,您可以在多个同时调用fftw_execute
. 因此,如果您的变换大小相同,则所有线程只需要一个计划。
于 2013-01-14T14:36:25.160 回答