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

DirectX Discussion :

création de plusieurs threads dans WinMain


Sujet :

DirectX

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut création de plusieurs threads dans WinMain
    bonjour

    je voudrais, si c'est possible, creer plusieurs threads à l'intérieur de mon point d'entree WinMain. Au lieu de laisser ma boucle de messages et mon appel de Render dans WinMain, j'ai inclus cette tache dans un thread que je crée après les initialisations des classes, device etc... Je crée ensuite un second thread qui sera chargé de gérer un périphérique extérieur.

    Au niveau de la compil' pas de soucis mais lorsque je lance l'appli, l'uc sature ce qui ne m'étonne pas trop

    j'ai pensé à positionner le flag D3DCREATE_MULTITHREADED lors de la creation du device mais ce n'est visiblement pas suffisant et pas très conseillé en terme de performance d'après les post que j'ai pu lire. Je pense qu'il me manque d'autres choses à initialiser ou à positionner convenablement pour que mes differents elements communiquent convenablement entre eux et bossent sans truster toute l'uc...

    J'utilise les messages pour communiquer entre les differents threads ou fonctions de l'appli. Peut etre que ça vient aussi de la....

    Mon appli graphique fonctionne bien mais depuis que je l'ai modifiée pour inclure ces threads ca plante....

    Je ne maitrise malheureusement pas vraiment la programmation multi-threads sous directx donc je supplie vos ames charitables de bien vouloir m'éclairer un peu...

    Une bonne petite url serait ma fois bien venue donc si quelqu'un connait un bon site, je suis preneur !

    Merci d'avance

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Salut.

    Pour la gestion multithread avec directx, je ne pense pas que ça pose de problème particulier, lorsque c'est bien programmé, bien sur.

    Dans l'API directplay, tu as ce morceau de code simple qui peut-être utilisable:

    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
    MSG msg;
     
        // Start the game loop
        for(;;)
        {
            // Handle dialog messages if present
            if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
            {
                // Check for game exit
                if( WM_QUIT == msg.message )
                    break;
     
                if( !IsDialogMessage( g_hDlg, &msg ) )
                {
                    TranslateMessage( &msg );
                    DispatchMessage( &msg );
                }
            }
            else
            {
                // Send outgoing network data
                if( g_bConnected || g_bHosting )
                    SendDirectPlayMessage();
     
                // Handle incoming network data
                // Here we're setting the allowed timeslice at 100 milliseconds.
                // The program will block while DoWork handles network communication
                // so we don't need to worry about thread synchronization issues as
                // we have on earlier tutorials.
                g_pThreadPool->DoWork( 100, 0 );
     
                // Render the scene
                Render();
     
                // Yield some time for other processes
                Sleep( 10 );
            }
        }
    Je ne te donne pas d'explication, regardes le tutorial et tu comprendras.

    Pour ce qui est de D3DCREATE_MULTITHREADED, je ne vois pas non plus ou est le problème. J'ai une appli directxgraphics avec du multithread directshow, no problemo.

    Ca c'est un lien pour les threads:

    http://perso.wanadoo.fr/dgil/ftp/coiffeur_cpp.txt

    Je trouve qu'il est sympa, et qu'il aide à bien comprendre la difficulté de la chose.

Discussions similaires

  1. Création de plusieurs thread dynamiquement
    Par Coussati dans le forum Débuter
    Réponses: 6
    Dernier message: 11/10/2010, 15h44
  2. Création de plusieurs colonnes dans une List
    Par WibiMaster dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 21/06/2010, 15h45
  3. [VxiR2] Création de plusieurs requêtes dans des rapports différents
    Par bauduin-o dans le forum Webi
    Réponses: 2
    Dernier message: 13/07/2009, 10h27
  4. [1.x] Création de plusieurs objets dans mon action.class.php
    Par lijko dans le forum Symfony
    Réponses: 2
    Dernier message: 30/12/2007, 14h37
  5. création de plusieurs fiches dans un meme formulaire...
    Par Toff !!!!! dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2005, 14h44

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