Je souhaite créer un pool de threads simple (sur un système * nix) pour gérer les entrées sur mon serveur de communication asynchrone. Et j'ai quelques questions. Au début, je veux juste avoir un nombre statique de threads, disons arbitrairement 6.Mise en œuvre du pool de threads
Comment dois-je envoyer la commande au thread de travail?
Je pensais à l'aide de communication simple socket, avec quelque chose comme ça
thread principal :: envoyer [socket (RECV) (envoyer) otherSocket];
puis avoir mes threads simplement bloquer sur l'appel de réception, est-ce horriblement inefficace?
Y a-t-il une bibliothèque que je devrais utiliser? Y a-t-il de meilleures méthodes d'implémentation
(plus tard, je vais faire les fils dynamiques, je viens de comprendre qu'il serait plus facile de commencer par un numéro de série)
Mon serveur sera une machine linux (probablement un serveur ubuntu), savez-vous s'il y a des API de pool de threads disponibles? Si nécessaire je peux utiliser windows, mais avec l'absence d'une fonction poll(), je préférerais rester à l'écart ... *** Je le garde sur une seule machine. J'aime l'implémentation de votre file d'attente, je vais essayer. *** Nous vous remercions de votre réponse. – ultifinitus
@ultifinitus: Cette implémentation de file d'attente particulière utilise des fonctions Windows, donc cela ne fonctionnera pas sous Linux. Vous voulez/devez remplacer les appels de fonction Windows par des équivalents pthreads (ce qui n'est pas entièrement simple). Boost a une implémentation "future" C++ que vous pourriez trouver utile (c'est fondamentalement une API de haut niveau pour un pool de threads). Je ne suis pas sûr, mais je crois me rappeler que quelques-unes des versions les plus récentes de gcc ont des futures dans la bibliothèque standard (elles font partie de la nouvelle norme C++ 11). –
Je pense que mon plan, à cette seconde est de faire un pool de threads horriblement simple, si rien d'autre pour voir ce que les gains de performance avec mes compétences maigres viendront. *** Je me pencherai sur les contrats à terme *** J'ai de l'expérience avec les threads dans les systèmes Windows et Posix. *** pour l'instant je vais juste faire une classe manager, donc quand mon serveur reçoit un message, il peut le lancer au manager qui peut diviser les résultats en mes threads ... Merci encore. – ultifinitus