Conception à l’aide de fork () et d’une connexion TCP en C

J’ai une question concernant la conception du système suivant:

Mon système est composé de plusieurs clients écoutant un environnement. Lorsqu’un seuil audio est dépassé, ils transmettent leurs informations à un serveur, qui a des enfants qui écoutent à chaque connexion. Le serveur a besoin des informations de tous les clients pour effectuer les calculs nécessaires.

Actuellement, le serveur fonctionne sous UNIX et a établi des connexions. Ils travaillent indépendamment.

Ce que je veux faire, c’est dire au parent (sur le serveur) que l’information a été envoyée et qu’il est maintenant temps de la traiter. Comment devrais-je le faire ?

Je pense à différentes façons de le faire:

  1. Utiliser signal() sous Unix pour indiquer en quelque sorte au parent que quelque chose est arrivé
  2. Convertir en threads et utiliser certaines fonctions d’attente et de notification

La signalisation est préférable mais je n’arrive pas à comprendre comment le faire efficacement. Parce que ce qui suit peut arriver dans mon système:

  • Si tous les clients ont correctement envoyé des informations à leurs enfants du serveur, comment puis-je dire au parent que je suis prêt de manière efficace? Je ne sais pas / je ne sais pas comment il va les traiter.
  • Le serveur peut ne pas recevoir d’informations de tous les clients. Donc, le parent doit attendre un moment pour tous les enfants mais pas trop longtemps. Donc, je devine une sorte de timer?

N’utilisez pas de fourchette et n’utilisez pas de signaux. Utilisez un pool de threads .

Qu’en est-il d’un socket de domaine Unix pour une communication inter-processus entre enfants et père?

http://en.wikipedia.org/wiki/Unix_domain_socket

Dès qu’un enfant reçoit des données via la connexion TCP, ces mêmes données sont transmises au processus père via le socket de domaine Unix et ce dernier processus est immédiatement informé