Bonsoir a tous,
J'utilise un thread pour recevoir des messages UDP que je stocke dans une liste chainée. Tout se passe bien. Voici le code :
PS : Les threads utilisés sont les threads windows (CreateThread...)
J'ai 2-3 questions :
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 struct timeval tv; tv.tv_sec = 0; //timeout in seconds tv.tv_usec = 100; //timeout in micorseconds Message_Struct * myMessage = (Message_Struct*)malloc(sizeof(Message_Struct)); while ( stopRequired == 0 ) { FD_ZERO(&readfs); FD_SET(mySocket, &readfs); if(select(mySocket + 1,&readfs,NULL,NULL,&tv)){ // Error check } // Check if there is available data if(FD_ISSET(mySocket,&readfs)){ // Utilisation des descripteur non nécessaire puisque thread uniquement pour la récetpion // Copy them byteLength = recvfrom(mySocket, (char*)myMessage, sizeof(Message_Struct),0,(SOCKADDR*)&fromAddress,&fromAddressLength); if(byteLength > 0){ // Get the linked list node where to store it msg = getMessageStorage(myMessage->Signature); if(msg != 0){ memcpy(msg,myMessage,sizeof(Message_Struct)); } } } }
- pourriez vous me confirmer que l'utilisation de descripteur ici ne sert a rien, puisque le thread est uniquement créé pour récupérer les messages recu, et les stocker dans une liste chainée ? Qu'en est il de la charge du processeur ? J'ai besoin que ce thread soit aussi léger que possible.
- Je voudrais remplacer memcpy par un echange de pointeur pour gagner en vitesse. En échangeant le pointeur du message recu myMessage dans le recvfrom avec celui de la liste chaînée. Du genre, remplacer le memcpy par :
-Cela presenterai t-il réellement un gain de vitesse ? (Je pense que oui, l'interversion de pointeur me semblant plus rapide que le memcpy)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 LinkedListNode* tmpNode = getListNode(myMessage->Signature); if(tmpNode != NULL){ Message_Struct * tmpMsg = tmpNode->Message; tmpNode->Message = consumedExchange; myMessage = tmpMsg; }
-Cela peut il présenter d'autres dangers ? Le message recu n'est accédé qu'en lecture...
Merci
Partager