• # Sémaphores

    Posté par (site web personnel) . En réponse au message OpenMP, synchronisation. Évalué à 5.

    Évidemment ce n'est pas du tout dans l'esprit d'openMP où la mécanique des filaments est supposément camouflée, mais pourquoi ne pas employer un sémaphore ?

    Au début de la zone parallèle le filament 0 le ferme (sem_init à valeur négative), et une barrière impose aux autre processus d'attendre que la fermeture soit effective. Ensuite, à la place du #pragma omp barrier, le processus 0 ouvre le sémaphore (sem_post nthread fois) autant de fois qu'il y a d'autre filaments. Les autres filaments eux exécutent une portion de code les faisant attendre l'ouverture (sem_wait). Une fois que le boulot est achevé, un petit coup de omp barrier pour que le filament maître puisse détruire le sémaphore en toute quiétude.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace