我正在使用两个Boost线程,每个线程使用不同的FFTW计划(例如:线程1使用' plan_fft'线程2使用' plan_ifft')。当我只运行一个线程(线程2)时,它运行正常,但是当我运行两个线程时,我就会遇到分段错误。我认为这可能是因为创建计划不是线程安全的。如果有人提供解决方案,那将对我有很大的帮助。如何在两个线程中以并行方式使用两个不同的fftw_plans(每个在一个线程中)"。
我忘了提及FFTW多线程开发人员提供的解决方案:
我实现了第二个(即在主程序中创建了所有计划,然后从主程序中调用了两个线程)。当我这样做时,没有错误和分段错误,但我没有得到结果。
请注意:这两个线程是独立的,不共享任何常见数据,因此我认为信号量锁对我的案例不起作用。
我怀疑:我们可以在主程序中创建(并销毁)计划,并在两个不同的线程中执行这两个不同的计划吗?
答案 0 :(得分:0)
FFTW人员为线程安全主题here提供了一个很好的总结。总结:除了fftw_execute
之外,没有什么是线程安全的,所以你必须要小心,例如只有一个线程创建计划。但是,并行执行它们应该没有问题。