Je suis enterré dans des documents multithread/parallelism, essayant de comprendre comment implémenter une implémentation de threading dans un langage de programmation que j'ai conçu. J'essaie de mapper un modèle mental à la bibliothèque pthreads.h
, mais j'ai un problème avec une chose: j'ai besoin de mes instances d'interprète pour continuer à exister après avoir terminé l'interprétation d'un routine
(la fermeture/la fonction du langage) type de données), parce que je veux leur attribuer plus tard autresroutine
pour leur interprétation, ce qui me permet d'économiser le temps d'installation et de démontage du thread et de l'interpréteur.Existe-t-il un moyen de 'joindre' (bloquer) dans les threads POSIX, sans quitter le rôle?
Ce serait bien, sauf que pthread_join(3)
exige que j'appelle pthread_exit(3)
pour «débloquer» le fil d'origine. Comment puis-je bloquer le thread d'origine (lorsqu'il a besoin du résultat de l'exécution du routine
), puis le débloquer lorsque l'interprétation de la routine enfant est terminée?
Juste un sémaphore peut être suffisant dans ce cas - init avec la valeur 0, attendez-le dans un thread et postez-le dans l'autre. Même principe, cependant. –
Quand vous dites 'attendez', voulez-vous dire simplement une boucle serrée contre le fil d'origine? C'est ... eh bien, j'essayais d'éviter une solution aussi hacky/boiteuse. Je veux réellement geler le thread en utilisant la bibliothèque 'pthread.h' si je le peux, de sorte qu'il ne soit même pas programmé: cela devrait économiser beaucoup de temps d'exécution, non? – ELLIOTTCABLE
@elliotcable: Je faisais référence à pthread_cond_wait: http://opengroup.org/onlinepubs/007908799/xsh/pthread_cond_wait.html – rpetrich