Salut à tous,

Je me pose une question très simple, mais que je à laquelle je n'ai pas de réponse.

J'écris une application de type client-serveur. Mon serveur est en multithread et délègue les tâches au pool de thread quand des messages se présentent pour se replacer immédiatement en écoute.

De ce coté, c'est testé, pas de soucis particuliers.

Mon problème est du coté client. J'ai plusieurs processus sur un seul client qui veulent tous parler au serveur, et je ne sais pas comment gérer l'accès au socket. Si deux veulent prendre la parole en même temps, ben un des deux se mange une erreur. Il pourrait faire un truc du genre reessayer toutes les secondes, mais je n'aime pas trop cette solution. Si on a vraiment pas de bol, il est possible qu'un processus ne parle jamais.

A la limite, un peu plus propre, un envoi de signal du processus qui parle quand il a fini de parler pour dire aux processus en attente que la voie est libre, mais ça me semble toujours bancal comme solution.

Un truc propre serait de faire un processus qui monopolise le socket en écriture et qui fonctionne à l'inverse du client serveur, il lit une mémoire partagée ou un truc du genre et les processus viendraient y coller leurs messages, le processus qui gere le socket les envoie, recupere la réponse et la met aussi dans la mémoire partagée, qui sera lue par le processus qui envoyait le message.

Je ne trouve pas tellement d'exemple de bonne manière sur le net. On trouve des millions de serveurs mais souvent les applis clientes sont assez délaissées et je n'ai rien trouvé sur l'accès concurrent en écriture au socket.

Auriez-vous une idée ? Une des solution que j'avance tient-elle la route ?

Merci et bonne soirée

Cyril