J'écris une bibliothèque en C qui a besoin de fork() pendant l'initialisation. Par conséquent, je veux affirmer() que le code de l'application (qui est hors de mon contrôle) appelle le code d'initialisation de ma bibliothèque à partir d'un seul contexte threadé (pour éviter le fameux " les fils et la fourchette ne se mélangent pas "). Une fois que ma bibliothèque a été initialisée, elle est thread safe (et il est prévu que le code au niveau de l'application puisse créer des threads). Je ne suis concerné que par la prise en charge des pthreads.
Il semble impossible de compter le nombre de threads dans l'espace du processus actuel en utilisant pthreads. En effet, même googletest n'implémente que GetThreadCount() sur Mac OS et QNX.
Étant donné que je ne peux pas compter les fils, est-il possible que je puisse affirmer un contexte à fil unique ?
Clarification : Si possible, je voudrais éviter d'utiliser "/proc" (non portable), une dépendance supplémentaire de la bibliothèque (comme libproc) et les wrappers pthread_create de style LD_PRELOAD.
Clarification #2 : Dans mon cas, l'utilisation de plusieurs processus est nécessaire car les travailleurs de ma bibliothèque sont relativement lourds (utilisant webkit) et peuvent se planter. Cependant, je veux que le processus original survive aux plantages des travailleurs.