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

SDL Discussion :

Not enough resources to create thread


Sujet :

SDL

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut Not enough resources to create thread
    salut,

    j'ai un problème au moment de la création d'un thread, jusque hier tout se passait bien, et ce matin voilà qu'un des thread ne se crée plus! il ne me semble pourtant pas avoir effectuer de changement a ce niveau.

    je vous montre, peut être trouverez vous la cause du problème:

    création du thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        //création du thread
        SDL_Thread* move_thread;
     
        //initialisation du thread
        move_thread = SDL_CreateThread(&second_thread,&items);
     
        //verification...
        if ( move_thread == NULL ) {
            FILE* file = fopen("check.txt","a");
            fprintf(file, "Unable to create thread: %s\n", SDL_GetError());
            fclose(file);
        }
    le thread:
    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
     
    int second_thread(void *_data){
     
        //convertion du parametre _data
        Items *items = (Items*) _data;
     
        //création et initialisation des variables de temps
        int tick = SDL_GetTicks();
        int last_tick = SDL_GetTicks();
     
        while(run != -1){
     
                //on prend le mutex
                SDL_mutexP(mutex1);
     
                //décharg processeur
                SDL_Delay(PROC_PAUSE_TIME);
     
                //on récupere le temps actuel
                tick = SDL_GetTicks();
     
                //on déplace les objets
                items->move(tick - last_tick);
     
                //on modifie l'ancien tick
                last_tick = tick;
     
                //on libere le mutex
                SDL_mutexV(mutex2);
     
        }
     
        return 0;
     
    }
    au moment de la vérification de l'initialisation, le fichier contient le message suivant:
    Unable to create thread: Not enough resources to create thread
    avez vous une piste?

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Est-ce que le problème arrive tout le temps?

    Sinon peut-être que tu as une fuite mémoire et donc que tu n'as plus d'espace pour créer un nouveau thread.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    oui, a chaque fois que je lance le programme.

    et non, normalement pas de fuite de mémoire, meme apres reboot c'est pareil, et le thread est créé vers le début de l'application, de plus le gestionnaire de tache indique que je suis loin d'utiliser toutes les capacitées de mon pc.

    et puis comment expliquer que ça ne fonctionne plus du jour au lendemin?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    de plus, le programme est composé de 2 threads, le premier se lance parfaitement, mais pas le second, et si j'execute une seconde fois le programme, le premier thread de la seconde execution se lance normalement (mais pas le second thread) .

    donc cela prouve qu'il y a encore possibilitée de lancer des threads... et qu'il y a encore asser de ressources.

  5. #5
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Salut


    La fonction "second_thread" ne devrait pas etre caster en (*void) par hasard ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    les threads SDL sont de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int mon_thread(void* data)

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    j'ai testé avec les threads win32... ça ne marche pas non plus!

    j'ai fait un petit test, et je me demande si la création d'un thread a partir d'un autre thread pause problème? en effet, j'ai pas encore tester avec SDL, mais avec win32... la création d'un thread depuis un premier thread ne fonctionne pas alors que si je le crée depuis le main ça fonctionne très bien.

    il ne me semble pas avoir déjà lu quelque chose parlant d'impossibilité ou de limitation de création de thread dans un thread... de plus, ça fonctionnait très bien avant!

    peut être qu'avec ce complément d'information vous avez une idée?

  8. #8
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Ce que tu peux faire, c'est de regarder dans les sources de SDL pour où dans le code l'erreur "Not enough resources to create thread" est lancée.

    Si tu as de la patience

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    Apres vérification, la création du thread SDL fonctione depuis le main, mais pas depuis le premier thread...

    je peut donc me débrouiller en le créant depuis le main et en récupérant &Items par variables globale... mais j'aimerais mieux eviter...

    je m'amuserai a aller creuser dans le code de SDL si je ne trouve pas de meilleur solution... mais la aussi j'aimerais mieux eviter...

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    Il semblerai qu'il y ai une limitation sur le nombre de thread ( 1024 j'ai lut quelque part ) et ce serait ça qui fait tout buguer, je chargeai un grand nombre de sprite (pour tester) et ces sprites on un thread permettant l'animation.

    voila... pas de probleme avec SDL_CreateThread

  11. #11
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par bebaijhi Voir le message
    je chargeai un grand nombre de sprite (pour tester) et ces sprites on un thread permettant l'animation.
    Huh... c'est peut-être l'occasion de reconsidérer cette approche

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 308
    Points : 622
    Points
    622
    Par défaut
    déjà fait...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD14] Not enough storage is available to process this command? Pourquoi
    Par chapeau_melon dans le forum WinDev
    Réponses: 0
    Dernier message: 28/05/2009, 07h51
  2. [BODI]erreur Db:not enough space
    Par tigrebin dans le forum BODI
    Réponses: 3
    Dernier message: 06/04/2009, 10h13
  3. restriction souris fenêtre : erreur 8 not enough storage ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 4
    Dernier message: 12/02/2008, 15h14
  4. [ORA-00371] Not enough shared pool memory !!!
    Par max44410 dans le forum Installation
    Réponses: 6
    Dernier message: 30/11/2005, 19h47

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