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

时间:2015-05-21 10:31:11

标签: c++ openmp

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

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,则抛出异常八次。我也无法在try块内将线程数设置为1。我喜欢使用多个线程但是如果有异常,它应该只抛出一次。我试过&#34; critical&#34;和&#34;屏障&#34;。但它没有任何区别。我正在使用visual studio 2013 ultimate。我无法使用openmp的新功能。是否有一些建议。

1 个答案:

答案 0 :(得分:0)

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