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

  FORUM HardWare.fr
  Programmation
  C++

  problème avec les threads (associés aux sockets) sous windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec les threads (associés aux sockets) sous windows

n°650037
beusser
Posté le 20-02-2004 à 16:54:44  profilanswer
 

Bonjour,
J'ai l'erreur suivante à la compilation :
 
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
 
j'ai essayé différents header (winbase.h, windows.h) mais n'y fait. Pouvez vous m'aider ?
La ligne indiquée par le compilateur est celle où il y a la fonction CreateThread(...).
 
voici un bout du code :

Code :
  1. int sockInfoClientSize = sizeof(sockInfoClient) ;
  2. semaphoreHandle = CreateSemaphore(NULL,4,4,NULL);
  3. while(1)
  4. {
  5.  newSocket = accept(mySocketServer, (SOCKADDR *)&sockInfoClient, &sockInfoClientSize);
  6.  if (newSocket != -1)
  7.  {
  8.   threadHandle[threadCounter]=CreateThread(NULL,NULL, ThreadProc, (LPVOID)threadCounter,NULL,&threadIdentifier);
  9.   threadCounter++ ;
  10.   WaitForMultipleObjects(MAXIMUM_WAIT_OBJECTS, threadHandle,TRUE,INFINITE);
  11.   CloseHandle(semaphoreHandle);
  12.  }
  13. }

mood
Publicité
Posté le 20-02-2004 à 16:54:44  profilanswer
 

n°650076
beusser
Posté le 20-02-2004 à 17:22:42  profilanswer
 

est-ce que ça ne viendrait pas de la définition de la classe ?

Code :
  1. class getFile
  2. {
  3. private :
  4. /***threads' variables***/
  5. DWORD threadIdentifier;
  6. HANDLE threadHandle[nbThreads];
  7. HANDLE semaphoreHandle;
  8. int threadCounter ;
  9. /*other variables*/
  10. DWORD WINAPI threadProc(LPVOID lpParam) ;
  11. /*other methods*/
  12. public :
  13. getFile () ;
  14. void serverConnections () ;
  15. void clientConnections () ;
  16. };

n°650400
blackgodde​ss
vive le troll !
Posté le 21-02-2004 à 00:47:35  profilanswer
 

mmh ... ThreadProc doit etre static
 
une méthode pour y arriver, par exemple :
 

Code :
  1. class ma_classe
  2. {
  3.   void new_thread()
  4.   {
  5.      DWORD ThreadID;
  6.      HANDLE hThread = CreateThread(NULL, 0, internal_threadentry, this, 0, &ThreadID);
  7.      CloseHandle(hThread);
  8.   }
  9.   static DWORD WINAPI internal_threadentry(LPVOID lpParam)
  10.   {
  11.     (reinterpret_cast<ma_classe*>lpParam)->threadentry();
  12.     return 0;
  13.   }
  14.   void threadentry()
  15.   {
  16.   }
  17. };


 
sinon cf boost::thread :)
 
edit : sinon, par défaut, les membres d'une classes sont privés, donc  
 
  class getFile  
  {  
    private :
 
private: est inutile


Message édité par blackgoddess le 21-02-2004 à 00:48:58

---------------
-( BlackGoddess )-
n°650402
karlkox
Posté le 21-02-2004 à 00:49:18  profilanswer
 

Ce serait tres utile qu'on voit à quoi ressemble ta fonction ThreadProc.

n°743467
sylpichard
Posté le 28-05-2004 à 14:38:16  profilanswer
 

la méthode attachée au thread doit être static

n°743556
Joel F
Real men use unique_ptr
Posté le 28-05-2004 à 15:12:03  profilanswer
 

pointeur de fonction != pointeur de fonction member :o


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

  problème avec les threads (associés aux sockets) sous windows

 

Sujets relatifs
Problème avec un tableau et un require inclus dedans..Problème de tri avec usort
problème de table[RESOLU]Problème de communication (DataInputStream & DataOutputStream)
Problème d'installation de Javamail (urgent)probleme avec variable de session (sou oracle)
[Mysql] problème avec SELECT WHERE IN[CSS] Problème de placement de div avec float
gérer le démarrage de windowsAttaquer une DLL Windows en Java...
Plus de sujets relatifs à : problème avec les threads (associés aux sockets) sous windows


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