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

  FORUM HardWare.fr
  Programmation

  [C++] pthread_cleanup_push ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] pthread_cleanup_push ???

n°52318
sanglier04
Posté le 11-08-2001 à 13:57:48  profilanswer
 

lut je veut utiliser cette fonction sous linux :
 
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
 
void main()
{
       char    *buff;
 
       buff = new char [50];
       pthread_cleanup_push (free, buff);
 
       pthread_cleanup_pop (1);
}
 
 
ca ca passe au compilateur mais maintenant si je lui passe une socket genre :
 
#include <pthread.h>
#include <unistd.h>
 
void main()
{
       char    *buff;
       int     sock;
 
       buff = new char [50];
       pthread_cleanup_push (free, buff);
 
       pthread_cleanup_push (close, (void *)&sock);
 
 
       pthread_cleanup_pop (1);
       pthread_cleanup_pop (1);
}
 
 
alors la le compilateur il aime po du tout et me sort l'erreure suivante :
 
passing 'int (*)(int) throw ()' as argument 2 of '_pthread_cleanup_push(_pthread_cleanup_push_buffer *, void (*)(void *), void *)'          
 
 
voila j'espère que kkun arrvira a me dire pourquoi ca ne marche pas car ca fait plusieurs heures que je suis dessus et j'arrive po :(

mood
Publicité
Posté le 11-08-2001 à 13:57:48  profilanswer
 

n°52320
verdoux
And I'm still waiting
Posté le 11-08-2001 à 14:10:05  profilanswer
 

Euh tu compiles ça en mode c++ ou c ?

n°52322
sanglier04
Posté le 11-08-2001 à 14:20:03  profilanswer
 

je le compile en c++ ( j'ai po le choix, j'utilise des classe )
 
ma ligne de commande : g++ -D_REENTRANT -lpthread ...
 
j'ai la version par defaut de gcc livrer sur la debian 2.2r3 (2.95 il me semble)
 
le fait de passe a la version 3 , ca pourrai amelioré ?

n°52323
verdoux
And I'm still waiting
Posté le 11-08-2001 à 14:30:55  profilanswer
 

Il doit y avoir un problème de gestion des exceptions c++ avec la librairie pthread.
En C ça doit passer.
 
Faut sans doute trouver une version de pthread compatible c++.

 

[edtdd]--Message édité par Verdoux--[/edtdd]

n°52325
sanglier04
Posté le 11-08-2001 à 15:06:19  profilanswer
 

ben la librairie de pthread_cleanup_push , la LinuxThread est directement integrer dans la glibc, je sais pas si on peut trouver une version pour le c++ a part. c kan meme bizzard car lorsque je fait pthread_cleanup_push (pthread_mutex_unlock, (void *) & mutex) ca ne passe pas non plus

n°52326
verdoux
And I'm still waiting
Posté le 11-08-2001 à 15:10:20  profilanswer
 

Et en C ?

n°52328
verdoux
And I'm still waiting
Posté le 11-08-2001 à 15:27:46  profilanswer
 

En fait j'ai dit des conneries, ça n'a rien à voir avec les exceptions c'est juste le prototype de close qui va pas.
 
T'as qu'à déclarer:
void myClose(void * p)
{
 close(*((int *) p));
}
 
puis  
pthread_cleanup_push (myClose, (void *)&sock);

 

[edtdd]--Message édité par Verdoux--[/edtdd]

n°52332
sanglier04
Posté le 11-08-2001 à 16:05:26  profilanswer
 

ok mercie ,ca marche ! :)
 
franchement jy aurai jamais pensé a cette solution !
 
sinon pour le c , ca passait correctement  
 
voila et encore mercie


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

  [C++] pthread_cleanup_push ???

 

Sujets relatifs
Plus de sujets relatifs à : [C++] pthread_cleanup_push ???


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