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

  FORUM HardWare.fr
  Programmation
  C++

  Thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Thread

n°1214789
moi23372
Posté le 04-10-2005 à 17:45:57  profilanswer
 

Voila je dois pour le moment faire un serveur reseau multithread et c'est au niveau des threads que j'ai un problème...
 
La situation:
un serveur unix COMPAQ DS-20 (dual cpu alpha)...
avec Tru 64 dessus...
 
Donc voila mon problème se situe à la compilation...
Voila le problème
 
Je lance dans une méthode de ma classe des threads
avec pthread_create (&handlethread, 0, (void *(*)(void*)) maFonction, 0);
 
"mFonction" est une méthode de ma classe C++.
A la compilation, j'ai une erreur au niveau du pthread_create au niveau du troisième argument.
 
=> ERROR: invalide type conversion  
 
J'ai déjà essayé plein de chose, de ne pas mettre le "(void*(*)(void*))" etc...
 
la méthode "mafonction" est définie comme suit dans ma classe
 
void* NetworkManager::maFonction (void* param)
{
   ...
}
 
bon ben si quelqu'un pouvais mtn m'aider à lancer le thread ça m'arrangerais. J'ai déjà cherché sur le net mais sans succès. Il semble que ça soit propre au compilateur et à la version de l'os ce genre d'erreur.
Je signale qu'en C sur la même machine ça tourne sans problème. C'est uniquement quand je passe à C++ que j'ai le problème avec le pthread_create

mood
Publicité
Posté le 04-10-2005 à 17:45:57  profilanswer
 

n°1214899
Taz
bisounours-codeur
Posté le 04-10-2005 à 19:21:25  profilanswer
 

il te faut soit :
- une fonction libre
- une fonction membre static (auquel cas, tu peux faire en sorte que le void* soit ton this)
 
Dans tous les cas : gaffe aux exceptions, si ça pète dans le C, c'est foutu.

n°1214917
moi23372
Posté le 04-10-2005 à 19:35:33  profilanswer
 

qu'entends tu par une fonction libre?
 
Dans le cas d'une méthode static, quel en est l'intéret exactement dans ce concept?  
 
Je tenterais le coup demain quand j'aurais accès à la machine.
Mais j'aimerais bien savoir ce qu'est une fonction/méthode libre.

n°1215018
++fab
victime du syndrome IH
Posté le 04-10-2005 à 22:09:37  profilanswer
 

fonction libre == fonction non membre.
 
moi, j'aimerais savoir ce qu'est une méthode en C++ (libre de surcroit) :)

n°1215025
masklinn
í dag viðrar vel til loftárása
Posté le 04-10-2005 à 22:23:44  profilanswer
 

Une fonction "libre" c'est une "unbound function", une fonction n'étant pas rattachée à un objet.
 
Fonction membre = méthode = fonction rattachée à un objet (faisant partie des comportements définis de l'objet)
 
Méthode libre = non sens


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1215038
++fab
victime du syndrome IH
Posté le 04-10-2005 à 22:50:34  profilanswer
 

Citation :

Fonction membre = méthode = fonction rattachée à un objet (faisant partie des comportements définis de l'objet)


 
méthode = fonction membre && fonction membre == fonction rattachée à un objet.
 
le terme méthode ne s'emploi guère pour le C++

Message cité 1 fois
Message édité par ++fab le 04-10-2005 à 23:00:20
n°1215052
masklinn
í dag viðrar vel til loftárása
Posté le 04-10-2005 à 23:20:22  profilanswer
 

++fab a écrit :

le terme méthode ne s'emploi guère pour le C++


la méthode est un concept présent dans tous les langages orientés objet, puisque c'est un concept tiré directement de l'OO [:pingouino]
(c'est le moyen par lequel on envoie un message à un objet)
 
Donc que toi tu l'utilises ou pas, tout le monde s'en fout [:pingouino]


Message édité par masklinn le 04-10-2005 à 23:22:02

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1215056
++fab
victime du syndrome IH
Posté le 04-10-2005 à 23:32:20  profilanswer
 

conceptuellement sans aucuns doutes, mais "méthode" n'appartient pas au vocabulaire du C++, c'est un fait.

n°1217096
moi23372
Posté le 06-10-2005 à 21:44:11  profilanswer
 

méthode appartient au vocabulaire de la POO, donc appartient également au C++ puisque c'est un language OO. Maintenant si toi tu veux faire ton caca nerveux en prétendant le contraire, on s'en fou...

n°1217129
++fab
victime du syndrome IH
Posté le 06-10-2005 à 22:43:51  profilanswer
 

moi23372 a écrit :

méthode appartient au vocabulaire de la POO, donc appartient également au C++ puisque c'est un language OO.


 
tu t'avances un peu la ...
 

Citation :

Maintenant si toi tu veux faire ton caca nerveux en prétendant le contraire, on s'en fou...


 
et bien je me fous de te répondre d'avantage.

mood
Publicité
Posté le 06-10-2005 à 22:43:51  profilanswer
 

n°1218187
moi23372
Posté le 08-10-2005 à 09:37:47  profilanswer
 

sur quoi te base tu pour prétendre qu'on ne peu pas appeler les "fonctions" d'une classe "méthode"?
 
En tout cas, ayant eu des cours de C++ très poussé par des informaticiens plus que confirmé, le therme méthode à tjs été utilisé pour qualifier les "fonctions" d'une classe...

n°1218191
chrisbk
-
Posté le 08-10-2005 à 09:45:58  profilanswer
 

j'aurais tendance a dire que methode/fonction c'est de l'enculage de mouton

n°1218192
slash33
Posté le 08-10-2005 à 09:48:45  profilanswer
 

Encore un étudiant qui ne connaît pas le métier et qui veut donner des leçons. Ca me rappelle les querelles universitaires. Dis toi bien qu'en pratique on se fout du nom que ça porte du moment que tu sais ce que c'est et comment ça fonctionne.
 
Je rappelle au passage que c'est toi qui a demandé de l'aide. Envoyer bouler les anciens du forum n'est pas pour t'aider.

n°1218193
chrisbk
-
Posté le 08-10-2005 à 09:49:56  profilanswer
 

ouais surtout qu'apres avoir eu des cours "tres poussé" il butte sur un probleme de base [:pingouino]

n°1218195
slash33
Posté le 08-10-2005 à 09:52:58  profilanswer
 

C'est bien là la différence entre avoir pratiqué et avoir suivi un enseignement. Les priorités ne sont pas du tout les mêmes. Sans vouloir rentrer dans un débat stérile, en UML on les appelles opérations ou méthodes en fonction du niveau d'abstraction où on se place.


Message édité par slash33 le 08-10-2005 à 09:54:52
n°1218300
++fab
victime du syndrome IH
Posté le 08-10-2005 à 14:44:03  profilanswer
 

chrisbk a écrit :

j'aurais tendance a dire que methode/fonction c'est de l'enculage de mouton


 
stérilement parlant : plus ou moins profondément :)
Le terme méthode n'apparait à aucun moment dans la norme (sauf erreur probable de ma part).
Ce terme vient d'ailleurs. En Java, par exemple on parle de méthode. Celles-ci ont un comportement voisin des fonctions virtuelles en C++. Si bien que certains traduise méthode par fonctions virtuelles (comme Stroustrup le fait), d'autres par fonctions membres (virtuelles ou non).  
Du fait de l'ambiguité, je pense que méthode n'est pas un terme à employer en C++.

n°1218336
chrisbk
-
Posté le 08-10-2005 à 16:09:45  profilanswer
 

ouais, monidee est que quand on veut parler de fonction virtuelle on dit fonction virtuelle, et basta :d

n°1218372
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2005 à 17:21:47  profilanswer
 

++fab a écrit :

stérilement parlant : plus ou moins profondément :)
Le terme méthode n'apparait à aucun moment dans la norme (sauf erreur probable de ma part).
Ce terme vient d'ailleurs. En Java, par exemple on parle de méthode. Celles-ci ont un comportement voisin des fonctions virtuelles en C++. Si bien que certains traduise méthode par fonctions virtuelles (comme Stroustrup le fait), d'autres par fonctions membres (virtuelles ou non).  
Du fait de l'ambiguité, je pense que méthode n'est pas un terme à employer en C++.


Citation :

In computer science in particular, a method is another name for an action, algorithm, function, or procedure; more specifically, in object-oriented programming, it is an implementation of code responding to certain messages.


http://en.wikipedia.org/wiki/Method
 
La méthode est l'implémentation de la réponse à un message, appeler une méthode c'est enovoyer un message à un objet (concepts de base de la POO, un objet contient des données et répond à des messages, les données sont les variables membres et l'envoi des messages se fait via les méthodes, fonctions membres des objets). Rien de plus, rien de moins [:spamafote]


Message édité par masklinn le 08-10-2005 à 17:23:33

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1218380
++fab
victime du syndrome IH
Posté le 08-10-2005 à 17:38:15  profilanswer
 

vous radotez mon cher [:spamafote]
Je parle de C++ (je suis dans la bonne cat), tu parles OO de manière générale [:spamafote]

n°1218507
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2005 à 22:27:27  profilanswer
 

++fab a écrit :

Je parle de C++ (je suis dans la bonne cat), tu parles OO de manière générale [:spamafote]


Et aux dernières nouvelles, bien que le C++ soit un langage multi-paradigmes, on l'utilise souvent pour faire de la POO [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1218534
++fab
victime du syndrome IH
Posté le 08-10-2005 à 22:58:25  profilanswer
 

masklinn a écrit :

Et aux dernières nouvelles, bien que le C++ soit un langage multi-paradigmes, on l'utilise souvent pour faire de la POO [:petrus75]


 
voui, mais bien qu'il supporte la POO, quand on parle de C++, on emploie quand même le vocabulaire ad hoc. Sinon, tu risque de choquer les intégristes :o

n°1218539
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2005 à 23:15:03  profilanswer
 

++fab a écrit :

voui, mais bien qu'il supporte la POO, quand on parle de C++, on emploie quand même le vocabulaire ad hoc. Sinon, tu risque de choquer les intégristes :o


Le vocabulaire ad-hoc quand on parle de POO, c'est le vocabulaire de la POO, la seule personne que ça semble choquer c'est toi [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1218540
chrisbk
-
Posté le 08-10-2005 à 23:15:52  profilanswer
 

roh les deux tetes de pioches purée

n°1218544
++fab
victime du syndrome IH
Posté le 08-10-2005 à 23:21:50  profilanswer
 

mais on ne parle pas de POO, on parle de C++ :D etc ...

n°1218695
slash33
Posté le 09-10-2005 à 13:51:19  profilanswer
 

Vous vous êtes gourrés de thread  :sleep:


Message édité par slash33 le 09-10-2005 à 13:54:26
n°1219013
moi23372
Posté le 09-10-2005 à 20:25:34  profilanswer
 

c'est bon j'ai ma réponse depuis longtemps (depuis le premier message). Que vous appeliez ça méthode ou autre, pour moi c'est une méthode. Chacun son vocabulaire...


Message édité par moi23372 le 09-10-2005 à 20:25:57
n°1219048
chrisbk
-
Posté le 09-10-2005 à 21:01:34  profilanswer
 

moi j'appelle ca un melon

n°1219080
masklinn
í dag viðrar vel til loftárása
Posté le 09-10-2005 à 22:18:53  profilanswer
 

http://www.mse.berkeley.edu/groups/haller/nicols/germany/melon.jpg
 
[:petrus dei]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1275161
Bclass
Posté le 30-12-2005 à 22:46:44  profilanswer
 

Bonjour, j'ai le même probleme que toi... En fait, je suis embeter car le thread que je dois lancer doit utiliser une fonction qui n'est pas libre et qui doit appeller d'autre fonction dans la meme classe...
Ya t'-il une solution pour utiliser des threads sans utiliser de fonctions libres ?

n°1275164
Joel F
Real men use unique_ptr
Posté le 30-12-2005 à 23:05:39  profilanswer
 

boost::thread
boost::bind
loki::functor

n°1275232
cricri_
Posté le 31-12-2005 à 08:45:27  profilanswer
 

Ta fonction "libre" (static) qui lance le thread a normalement la possibilité d'avoir un argument, il suffit de mettre le pointeur de ta classe (this) et là tu lances la fonction membre de ta classe pour gérer le thread et elle aura accès à tous les éléments de cette classe.

n°1275749
blackgodde​ss
vive le troll !
Posté le 02-01-2006 à 09:58:04  profilanswer
 

moi23372 a écrit :

sur quoi te base tu pour prétendre qu'on ne peu pas appeler les "fonctions" d'une classe "méthode"?
 
En tout cas, ayant eu des cours de C++ très poussé par des informaticiens plus que confirmé, le therme méthode à tjs été utilisé pour qualifier les "fonctions" d'une classe...


 
LOL


---------------
-( BlackGoddess )-
n°1280211
fat
Posté le 10-01-2006 à 11:22:09  profilanswer
 

cricri_ a écrit :

Ta fonction "libre" (static) qui lance le thread a normalement la possibilité d'avoir un argument, il suffit de mettre le pointeur de ta classe (this) et là tu lances la fonction membre de ta classe pour gérer le thread et elle aura accès à tous les éléments de cette classe.


 
C'est une solution tout à fait correcte, exemple :
 
void MyClass::Thread()
{
...
}
 
void MyClass::StartThread()
{
 DWORD id;
 
 mThreadID = CreateThread(NULL,4096,thread,this,CREATE_SUSPENDED ,&id));
...
 ResumeThread(mThreadID);
...
}
 
et la fonction libre :
static DWORD WINAPI thread(void far *param)
{
 ((MyClass*)param)->Thread();
 Sleep(0);
 return 0;
}


Message édité par fat le 10-01-2006 à 11:22:52
n°1280441
blackgodde​ss
vive le troll !
Posté le 10-01-2006 à 14:30:47  profilanswer
 

((MyClass*)param)->Thread();
 
on fait du C ? :o


---------------
-( BlackGoddess )-
n°1285321
francky06l
Posté le 17-01-2006 à 11:27:06  profilanswer
 

J'ai eu un probleme similaire sous Solaris bien qu'un peu different.  
Essaye d'ajouter devant la fonction membre de la classe, le nom de la classe ie :  &myclass::member

n°1285362
francky06l
Posté le 17-01-2006 à 12:06:41  profilanswer
 

Oups desole ca ne marche pas, il semble que la seule solution est bien de passer par une function libre et de passer ton object en parametre.

mood
Publicité
Posté le   profilanswer
 


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

  Thread

 

Sujets relatifs
Savoir quand un thread ce termineAttendre la fin d'un thread créé par CreateThread()
thread et timeoutExécuter une méthode d'un objet dans un Thread
Multi-Threadthread sous windows
Thread et Processthread MFC, communication
[QT]Probleme de thread...Win32 - parcourir la pile utilisateur d'un thread
Plus de sujets relatifs à : Thread


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