Nie można zakończyć przedwcześnie budowy równoległej. OpenMP nie ma na to żadnego rozwiązania i określa, że regiony równoległe mogą mieć tylko jeden punkt wyjścia (więc nie ma rozgałęzień poza regionem ...).
Myślę, że jedynym (rozsądnym i przenośnym) sposobem osiągnięcia tego jest posiadanie zmiennej, która wskazuje, czy praca została zakończona i czy wątki regularnie sprawdzają tę zmienną (używając instrukcji atomowych i/lub spłukiwania w celu zapewnienia poprawnej widoczności) . Jeśli zmienna wskazuje, że praca jest wykonana, wątki mogą pominąć pozostałą pracę (umieszczając pozostałą pracę w treści, do której nie jest rozgałęziony, jeśli praca jest wykonana).
Możliwe jest napisanie kodu specyficznego dla systemu, który zawiesza inne wątki i ustawia je na końcu bloku (np. Manipulując stosem i wskazówkami instrukcji ...), ale nie wydaje się to zbyt wskazane (co oznacza, że prawdopodobnie bardzo kruche).
Jeśli powiesz nam nieco więcej o tym, co próbujesz zrobić (i dlaczego tego potrzebujesz), łatwiej będzie ci pomóc (np. Poprzez stworzenie projektu, który nie musi tego robić) .