В чем разница между атомарным и критическим в OpenMP?

В чем разница между атомарным и критическим в OpenMP? я могу это сделать #pragma omp atomic g_qCount++; но это не то же самое, что #pragma omp critical g_qCount++;