我有一个简单的代码如下。
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的新功能。是否有一些建议。
答案 0 :(得分:0)
您可以使用带有nowait子句的单个区域。