【发布时间】:2014-05-02 13:42:14
【问题描述】:
我正在使用两个 Boost 线程,每个线程都使用不同的 FFTW 计划(例如:线程 1 使用“plan_fft”,线程 2 使用“plan_ifft”)。当我只运行一个线程(线程 2)时,它运行良好,但是当我运行两个线程时,我遇到了分段错误。我认为这可能是因为创建计划不是线程安全的。如果有人提供“如何在两个线程中以并行方式使用两个不同的 fftw_plans(每个在一个线程中)”的解决方案,那对我会有很大帮助。
我忘了提一件事,FFTW 多线程开发者提供的解决方案:
- 使用信号量锁
- 在一个线程中创建所有计划
我实现了第二个(即在主程序中创建所有计划,然后从主程序中调用两个线程)。当我这样做时,没有错误和分段错误,但我没有得到结果。
请注意:这两个线程是独立的,不共享任何公共数据,所以我认为信号量锁不适用于我的情况。
我的疑问:我们能否在主程序中创建(和销毁)计划并在两个不同的线程中执行这两个不同的计划?
【问题讨论】:
标签: c++ multithreading semaphore fftw