Non è possibile terminare prematuramente un costrutto parallelo. OpenMP non ha costrutto per questo e specifica che le regioni parallele possono avere solo un punto di uscita (quindi nessuna ramificazione fuori dalla regione ...).
Penso che l'unico modo (sano e portatile) per ottenere ciò sia di avere una variabile che indica se il lavoro è finito e che i thread controllano quella variabile regolarmente (usando le istruzioni atomiche e/o gli svuotamenti per assicurare la visibilità corretta) . Se la variabile indica che il lavoro è stato fatto, i thread possono saltare il lavoro rimanente (mettendo il lavoro rimanente in un corpo di if che non è ramificato in se il lavoro è fatto).
Potrebbe essere possibile scrivere codice specifico del sistema, che sospende gli altri thread e li imposta alla fine del blocco (ad esempio, manipolando stack e istruzionipoint ...) ma ciò non sembra molto consigliabile (il che significa che probabilmente è molto fragile).
Se ci diresti qualcosa di più su ciò che stai cercando di fare (e perché ne hai bisogno), potrebbe essere più semplice aiutarti (ad esempio facendo un disegno che non ha bisogno di farlo) .