【问题标题】:How not to wait for other threads in OpenMP?如何不等待 OpenMP 中的其他线程?
【发布时间】:2010-08-03 05:16:31
【问题描述】:

我正在考虑在 C++ 中使用 OpenMP 进行多线程处理。但我想知道是否有办法告诉一个线程不要等待其他并发线程并继续我的程序? (也许我可以取消/杀死其他线程?)

我知道“nowait”子句的存在,但我希望动态地完成“等待”或“不等待”的决定(程序将根据我正在执行的过程的结果来决定)。

希望能得到一些建议。

提前致谢。

【问题讨论】:

    标签: c++ multithreading openmp


    【解决方案1】:

    我会按照以下方式做一些事情

    if(conditon)
    {
         taskA_with_Barriers();
    }  
    else
    {
         taskA_without_Barrier();
    }
    

    condtion 需要在所有线程中保持相同的常量。

    如果您需要取消线程,您可能使用了错误的技术。可能还想看看 pthreadsMPI

    【讨论】:

    • @nacho4d 如果您使用 C++,则使用 boost 线程更有意义。 OpenMP 的功能可能非常有限
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2020-09-21
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多