bonjour,
avant de poser ma question,je tiens à faire une petite description de mon code.
je dispose d'une fonction qui me génere des elements,je passe ces elements à une fonction qui monte une socket et appele deux thread une pour récuperer les réponses du serveur,l'autre pour l'envoi des élements générés),jusqu'ici tout est bon,ce traitement(Séquentiel:1envoi à la fois) demeure lent,je désire le rendre rapide(dans cet exemple 2 envois à la fois) et du coup j'ai transformé la fonction qui monte la socket à son tour à une Thread,comme ça la fonction de génération peut génerer un lot d'elements et appeler plusieurs thread de montage de sockets qui à leur tour appelent les threads d'envoi et de reception sur chaque socket .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
void generer(char* element1,char* element2,int i,int j)
{
HANDLE myhandle_send_it_via_socket_lot1;
HANDLE myhandle_send_it_via_socket_lot2,
struct thread_params_send send_params;
element1=.....;//traitement des element1
element2=.....;//traitement des element2
while(condition)//tant kil y'a des elements à envoyer
{
cout <<"affichage";
cout <<"affcihage";
send_params.element1=element1;
send_params.element2=element2;
myhandle_send_it_via_socket_lot1 = (HANDLE)_beginthreadex(0, 0, &Send_it_via_socket, (void*)&send_params, 0, 0);
element1=x;//transformation des elements generés
element2=y;//transformation des elementsgenéres
send_params.element1=element1;
send_params.element2=element2;
myhandle_send_it_via_socket_lot2 = (HANDLE)_beginthreadex(0, 0, &Send_it_via_socket, (void*)&send_params, 0, 0);
WaitForSingleObject( myhandle_send_it_via_socket_lot1, INFINITE );
WaitForSingleObject( myhandle_send_it_via_socket_lo2, INFINITE );
}
} |
donc je me trouve avec:
générer()->thread send_it_via_socket_lot1->thread envoi socket
générer()->thread send_it_via_socket_lot1->thread réception socket
génerer()->thread_send_it_via_socket_lot2->thread envoi socket
générer()->thread send_it_via_socket_lot2->thread réception socket
question:
a-les thread d'envoie et de reception socket affichent des résultant,donc j'ai un affichage en désordre et désagréable

Comment améliorer cet affichage?
b-lorsque je transforme:
element1=x;//transformation des elements generés
element2=y;//transformation des elementsgenéres
on dirait que c'est la première thread avec le handle myhandle_send_it_via_socket_lot1 qui prend les valeurs changés malgré que je l'ai appelé avec les anciens valeur du parametre (void*)&send_params
donc je me trouve obligé de mettre un waitforobjects avant la transformation des parametres,si j'attend thread send_it_via_socket_lot1 qu'elle termine ça veut dire que j'ai rien gagné.je me retrouve dans le régime séquentiel...

(((((
des suggestion sont la bienvenue.
Partager