Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1444 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Threads, sockets, throttling et attente active

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Threads, sockets, throttling et attente active

n°2265467
philippe06
Posté le 07-09-2015 à 13:52:26  profilanswer
 

Bonjour,
 
je travaille en ce moment sur ma propre implémentation d'un couple de programmes (client et serveur), en python 2.X sous linux, mais mes questions sont assez générales et pas tellement liées au dit environnement, supportant un protocole avec les particularités suivantes:
-1 unique connection par couple machine. Le couple de machine est constitué d'un client (port variable) et d'un serveur (port fixe), en TCP, avec
-Par contre, envoi de messages dans les 2 sens, chacun contenant un numéro de séquence.
-Chaque message est acquitté par une réponse, contenant notamment le numéro de séquence appelant
-Les messages envoyés par le client (hors réponses) sont envoyés à un rythme maximum de N (disons 10 pour commencer) messages par seconde glissante. Si plus de W (disons 4 pour commencer) messages ne sont pas acquittés,
le client doit cesser les envois de message en attendant que le serveur acquitte au moins 1 message.  
 
Au niveau de l'implémentation, le processus "serveur" fork à chaque connection d'un client. Ca ne devrait pas poser de problèmes majeurs pour le moment,
même si un pool de processus gérant chacun un pool de connections, sur le modèle de ce que fait par exemple apache sera plus avantageux pour gérer beaucoup de connections.
 
Je me pose les questions suivantes:
 
-En ce qui concerne la réception des messages dans le programme serveur (après donc la connection et le fork initial), j'hésite entre 2 solutions: utiliser un seul thread et des sockets non bloquantes ou utiliser des sockets bloquantes mais avec 2 thread.
 
Implementation #1

Code :
  1. While 1:
  2. msg=recv_sur_socket_non_bloquante()
  3. si msg:
  4.  traite_et_repondre(msg)
  5. sinon
  6.  msg_to_send=prochain_msg_a_envoyer()
  7.  Si msg_to_send
  8.   Si throttling_rate_ok()
  9.    envoyer(msg_to_send)
  10.    supprimer_msg_a_envoyer(msg_to_send)
  11.   Sinon
  12.    attendre_pas_longtemps()
  13.  Sinon
  14.   attendre_assez_longtemps()


Implementation #2

Code :
  1. Thread t1
  2.    msg=recv_sur_socket_bloquante()
  3.    ajouter_a_file_d_attente(msg)
  4.   Thread principal
  5.    Lancer t1
  6.    msg=msg_en_file_d_attente()
  7.    Si msg_en_file_d_attente()
  8.     traite_et_repondre(msg)
  9.    Sinon
  10.     msg_to_send=prochain_msg_a_envoyer()
  11.     Si msg_to_send
  12.      Si throttling_rate_ok()
  13.       envoyer(msg_to_send)
  14.       supprimer_msg_a_envoyer(msg_to_send)
  15.      Sinon
  16.       attendre_pas_longtemps()
  17.     Sinon
  18.      attendre_assez_longtemps()


       
Ma première question est: quelle est l'implémentation à privilégier (socket bloquante + thread OU socket non bloquante)?
 
Ma deuxième question est: y a t il une meilleure solution que d'effectuer un sleep/usleep quand on dépasse le throttling_rate (système d'attente active)?  
 
En effet pour un throttling rate de 20, je dois faire des sleep de moins de 50 ms, mais en cas de charge élevée sur le serveur, je n'ai pas vraiment
de garantie que le sleep ne va pas durer sensiblement plus longtemps que prévu.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
mood
Publicité
Posté le 07-09-2015 à 13:52:26  profilanswer
 

n°2265797
philippe06
Posté le 13-09-2015 à 14:33:27  profilanswer
 

Personne?


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
n°2265825
TotalRecal​l
Posté le 14-09-2015 à 11:01:34  profilanswer
 

Peut être en déplaçant le topic dans la catégorie Python ? :D


---------------
Topic .Net - C# @ Prog

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Threads, sockets, throttling et attente active

 

Sujets relatifs
[HTA] Administation tools Active directoryMenu externe avec fonction include et class:active
Menu externe avec fonction include et class:activeDeclaration d'active X sous visual basic 6
Modif couleur cellule active Excel[POWER SHELL] Problème d'import de module Active Directory
Sockets TCP - pourquoi recv() peut etre aleatoire ?? (paquets tronquésSGBD a base des sémaphores et threads
Changer la couleur du input:active ?[résolu][jQuery]mouseover+page active sur One page
Plus de sujets relatifs à : Threads, sockets, throttling et attente active


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR