如何在多线程中使用FFTW
How to use FFTW in multithreading?
我使用两个Boost线程,每个线程使用不同的FFTW计划(例如:线程1使用"plan_fft",线程2使用"plan_ifft"(。当我只运行一个线程(线程2(时,它工作得很好,但当我同时运行两个线程时,就会出现分段错误。我认为这可能是因为创建计划不是线程安全的。如果有人提供"如何以并行方式在两个线程中使用两个不同的fftw_plans(每个在一个线程中("的解决方案,对我来说将是非常有帮助的。
作为FFTW多线程开发人员提供的解决方案,我忘了提到一件事:
- 使用信号量锁
- 在一个线程中创建所有计划
我实现了第二个(即在主程序中创建了所有计划,然后从主程序中调用了两个线程(。当我这样做的时候,没有错误和分割错误,但我没有得到结果。
请注意:这两个线程是独立的,不共享任何公共数据,所以我认为信号量锁不适用于我的情况。
我的疑问是:我们能在主程序中创建(和销毁(计划,并在两个不同的线程中执行这两个不同计划吗?
FFTW人员在这里为线程安全主题提供了一个很好的总结。Wrapup:除了fftw_execute
之外,没有什么是线程安全的,所以你必须注意,例如,只有一个线程创建计划。但是,并行执行它们应该没有问题。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 多线程比没有线程C++慢
- 具有 C++11 多线程的特征库
- 通过安装信号处理程序关闭多线程应用程序
- 如何在多线程中使用FFTW
- 多线程程序中调用FFTW