¿Cuál es la diferencia entre atómico y crítico en OpenMP?

¿Cuál es la diferencia entre atómico y crítico en OpenMP? puedo hacer esto #pragma omp atomic g_qCount++; pero no es esto lo mismo que #pragma omp