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 .


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.