IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Threads windows this est null dans le constructeur


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 14
    Par d�faut Threads windows this est null dans le constructeur
    Bonjour les gens,

    Voil�, je bosse sur un projet qui est mutli thread�. J'utilise VC++ 2005. (avec les functions CreateThread etc...), et lorsque j'appelle le constructeur d'une classe, mon this est null, et c'est vraiment incompr�hensible, �tant donn� que je ne fais rien d'autre que l'appel au constructeur, alors �videment, lorsque j'essaie de setter les attributs de l'objet, le programme SIGSEV.

    Est ce que c'est normal, je m'y prends peut-�tre mal ?

    Je me suis dit c'ets peut �te comme en Java this est peut-�tre null dans le constructeur (sisi, �a arrive parfois) alors j'ai divis� mon contrusteur en 2
    -> Constructeur
    -> initialisation
    mais �a plante pareil.. De l'aide ???

    Voil� le bout de code qui plante :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    //macros compatibilité linux
    #ifdef WIN32
    # include <windows.h>
    # define SLEEP(A) Sleep((A))
     
    # define thread_hdl								HANDLE
    # define CREATE_THREAD(hdl, attr, fct, param)	hdl = CreateThread (0, 0, (LPTHREAD_START_ROUTINE)fct, param, 0, 0)
    # define JOIN_THREAD(hdl, ret)					WaitForSingleObject(hdl, INFINITE)
     
    # define mutex_hdl								HANDLE
    # define CREATE_MUTEX(mut, attr)				mut = CreateMutex((LPSECURITY_ATTRIBUTES)MUTEX_ALL_ACCESS, false, 0)
    # define LOCK_MUTEX(mut)						WaitForSingleObject(mut,INFINITE)
    # define UNLOCK_MUTEX(mut)						ReleaseMutex(mut)
    # define DESTROY_MUTEX(mut)						CloseHandle(mut)
     
    # define cond_hdl								HANDLE
    # define CREATE_SIGNAL(sig, attr)				sig = CreateEvent((LPSECURITY_ATTRIBUTES)EVENT_ALL_ACCESS, false, false, 0)
    # define SEND_SIGNAL(sig)						SetEvent(sig)
    # define WAIT_SIGNAL(sig, mut)					WaitForSingleObject(sig, INFINITE)
    # define DESTROY_SIGNAL(sig)					CloseHandle(sig)
    #else
    # include <pthread.h>
    # define SLEEP(A) usleep(A * 1000)
     
    # define thread_hdl								pthread_t
    # define CREATE_THREAD(hdl, attr, fct, param)	pthread_create(&hdl, attr, fct, param)
    # define JOIN_THREAD(hdl, ret)					pthread_join(hdl, ret);
     
    # define mutex_hdl								pthread_mutex_t
    # define CREATE_MUTEX(mut, attr)				pthread_mutex_init(&mut, attr)
    # define LOCK_MUTEX(mut)						pthread_mutex_lock(&mut)			
    # define UNLOCK_MUTEX(mut)						pthread_mutex_unlock(&mut)	
    # define DESTROY_MUTEX(mut)						pthread_mutex_destroy(&mut)
     
    # define cond_hdl								pthread_cond_t
    # define CREATE_SIGNAL(sid, attr)				pthread_cond_init(&sig, attr)
    # define SEND_SIGNAL(sig)						pthread_cond_signal(&sig)
    # define WAIT_SIGNAL(sig, mut)					pthread_cond_wait(&sig, mut)
    # define DESTROY_SIGNAL(sig)					pthread_cond_destroy(&sig)
    #endif
     
    //!macros compatibilité linux
     
    Stream::Stream (std::string& s)
    {
       filename_ = s;
    }
     
    void Stream::Init(std::string& s)
    {
       iformat_ = 0;
       opened = false;
       stop_requested = false;
       playing = false;
       paused = false;
       opened = false;
       CREATE_MUTEX(this->mut_packet_queue_, 0);
    //   CREATE_SIGNAL(this->cond_packet_queue_, 0);
     
       CREATE_MUTEX(this->mut_data_queue_, 0); // le debuggeur pointe la dessus lorsque le programme plante
       //CREATE_SIGNAL(this->cond_data_queue_, 0);
    }
    Voil�o, merci d'avance pour la r�ponse...

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Peut-on voir comment tu "appelles" le constructeur ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. plantage quand une valeur est nulle dans une requete
    Par vinze60 dans le forum Requ�tes et SQL.
    R�ponses: 15
    Dernier message: 29/04/2013, 21h55
  2. [Websphere Portal] pumaProfile.getCurrentUser() est null dans les Themes WebSphere 6.
    Par madjic_ouf dans le forum Portails
    R�ponses: 6
    Dernier message: 23/06/2008, 14h26
  3. R�ponses: 6
    Dernier message: 14/03/2006, 19h44
  4. R�ponses: 5
    Dernier message: 12/03/2006, 14h38
  5. Window.opener est null ?
    Par TekP@f dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 25/08/2005, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo