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

  FORUM HardWare.fr
  Programmation
  C++

  threads et fonctions membres / visual C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

threads et fonctions membres / visual C++

n°962190
Bouteille
Posté le 25-01-2005 à 18:33:11  profilanswer
 

Bonjour,
 
J'essaye de lancer une thread a l'aide de la fonction CreateThread de Windows :
 

Code :
  1. WINBASEAPIHANDLEWINAPI CreateThread(
  2.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  3.     DWORD dwStackSize,
  4.     LPTHREAD_START_ROUTINE lpStartAddress,
  5.     LPVOID lpParameter,
  6.     DWORD dwCreationFlags,
  7.     LPDWORD lpThreadId
  8.     );


 
C'est chiant tou ce blabla mais je dois passer un pointeur de fonction pour lpStartAddress.
 
Tout se passe bien pour le passage d'un pointeur de fonction classique mais je suis dans une classe et j'aimerais bien utiliser une fonction membre comme parametre du CreateThread.
 
J'ai seulement reussi a passer la fonction appelée lorsqu'elle etait definie comme statique mais je perd tout l'interet de l'acces aux données d'instance.
 
Est-ce possible ? Est-ce que ca rime a rien (voire debile) ?
 

mood
Publicité
Posté le 25-01-2005 à 18:33:11  profilanswer
 

n°962191
cricri_
Posté le 25-01-2005 à 18:36:58  profilanswer
 

De mémoire tu peux lui passer effectivement qu'un pointeur sur une fonction statique, mais il suffit de lui passer en argument "lpParameter" this, et là tu peux appeler la fonction de ta classe

n°962237
Bouteille
Posté le 25-01-2005 à 19:19:24  profilanswer
 

Merci pour la reponse mais c'est un peu porc, il est ou l'interet d'avoir une fonction statique ?
 
Est-ce quelqu'un connait la raison pour laquelle c'est interdit sinon ?

n°962240
cricri_
Posté le 25-01-2005 à 19:23:40  profilanswer
 

vi, c'est une fonction type callback, donc prédéfini, ça ne peut pas être une fonction membre ...
Recherche des infos les pointeurs de fonction membre ...
super trivial ... ;)

n°962245
Bouteille
Posté le 25-01-2005 à 19:27:42  profilanswer
 

tu parles de la fonction que je suis sensé envoyer a createthread ?

n°962258
Bouteille
Posté le 25-01-2005 à 19:33:10  profilanswer
 

ok, je pense avoir capté un truc ;)
 
j'ai lu ca sur les fonctions de callback  
[url] http://www.function-pointer.org/zip/f_fpt.pdf [/url]
 
donc ma fonction devrait obligatoirement etre de ce modele ?

n°962261
Bouteille
Posté le 25-01-2005 à 19:35:11  profilanswer
 

bon, j'essaye et je vous tient au courant :)

n°962263
cricri_
Posté le 25-01-2005 à 19:36:37  profilanswer
 

Oui, je comprends que ça puisse paraitre "porc", mais on ne peut pas faire autrement.
A mon avis les pointeurs sur fonction membre n'ont pas été bien pensé au depart ...

n°962285
Joel F
Real men use unique_ptr
Posté le 25-01-2005 à 19:56:46  profilanswer
 

hmmm et BOOST alors :o ???

n°962286
Bouteille
Posté le 25-01-2005 à 19:58:15  profilanswer
 

on peut regarder ici pour un bon exemple : http://c.developpez.com/faq/cpp/?p [...] ion_membre

mood
Publicité
Posté le 25-01-2005 à 19:58:15  profilanswer
 

n°962287
Bouteille
Posté le 25-01-2005 à 19:58:59  profilanswer
 

BOOST ?
???

n°962289
Joel F
Real men use unique_ptr
Posté le 25-01-2005 à 20:00:06  profilanswer
 
n°962291
Lam's
Profil: bas.
Posté le 25-01-2005 à 20:01:21  profilanswer
 

JoelF> je te renvoie au lien que tu avais donné :
http://www.codeproject.com/cpp/SoloGenericCallBack.asp
 
dans le topic désopilant de ChrisBK:
http://forum.hardware.fr/hardwaref [...] 0082-1.htm
 
En l'occurence, passer un functor de boost à un appel système de Windows, je suis pas sûr que ça se fasse facilement...
 
edit: Ah, tu veux dire, passer par les libs threads de boost ? Bonne idée...


Message édité par Lam's le 25-01-2005 à 20:02:02
n°962296
Joel F
Real men use unique_ptr
Posté le 25-01-2005 à 20:03:05  profilanswer
 

Lam's a écrit :


Ah, tu veux dire, passer par les libs threads de boost ? Bonne idée...


 
 
voila :)

n°962346
cricri_
Posté le 25-01-2005 à 21:42:05  profilanswer
 

Boost ou pas, c'est du bricolage je trouve ...

n°962372
Joel F
Real men use unique_ptr
Posté le 25-01-2005 à 22:13:04  profilanswer
 

Cricri_ a écrit :

Boost ou pas, c'est du bricolage je trouve ...


pardon o_O

n°964017
cricri_
Posté le 27-01-2005 à 19:50:25  profilanswer
 

Je parle des pointeurs sur fonction membre, perso je trouve ça infame, maintenant j'avoue ne pas avoir regardé boost, mais je doute que ça resolve simplement les problèmes ;)

n°964123
Joel F
Real men use unique_ptr
Posté le 27-01-2005 à 22:49:37  profilanswer
 

Si ca les resout croit moi ^^

n°964253
cricri_
Posté le 28-01-2005 à 08:31:21  profilanswer
 

Ok, je regarderai ça ;)


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

  threads et fonctions membres / visual C++

 

Sujets relatifs
[Visual C++] composant activeX executabledebuggage d'une DLL sous visual studio.net C++
Communication entre threads [Résolu & Code Source Final]Comment faire communiquer des threads ?
connection mysql dans plusieurs fonctionsun visual basic .net en open source
Bonnes adresses web visual c++ svpquestion sur visual basic !
libsdl, visual studio, comment l'installer?Question sur les fonctions??
Plus de sujets relatifs à : threads et fonctions membres / visual C++


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