如何使用openmp只抛出一次异常

How to throw exception only once using openmp

本文关键字:一次 异常 何使用 openmp      更新时间:2023-10-16

我有一个简单的代码如下。

int a , b;
std::cout << "Enter the value of a and b " << std::endl;
std::cin >> a >> b;
#pragma omp parallel 
{
    try
    {
        if( b == 0 )
        {
            throw std::exception( "Attempt to divide by zero" );
        }
        else
        {
            std::cout << ( a / b );
        }
    }
    catch( const std::exception e )
    {
        std::cout << e.what();
    }
}

因为有八个线程。如果b的值为0,则抛出8次异常。我也无法将try块内的线程数设置为1。我喜欢使用多个线程,但是如果有异常,应该只抛出一次。我试着用"critical"answers"barrier"。但这没什么区别。我使用的是visual studio 2013 ultimate。我无法使用openmp的新功能。有什么建议吗?

您可以使用nowait子句的单个区域