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 :

Visual C++ 2005 + TPL


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 31
    Par défaut Visual C++ 2005 + TPL
    Bonjour,

    Nouveau en programmation sous Windows avec Visual, j'ai quelques petits problèmes avec cet environnement.

    Je teste les différents envirronement de programmation multi-thread et j'en arrive à TPL :
    http://msdn.microsoft.com/msdnmag/is...lt.aspx?loc=fr

    Pour ce faire, j'utilise tout simplement, l'article d'introduction :


    J'ai donc installé
    - le Framework 3.5 -> D'ailleurs comment vérifié que cela ait marché (j'ai toujours le Framework 2.0 indiqué dans Help -> about de Visual (question 1) )
    - installer le package contenant ses nouvelles instructions (le .msi sur le site MSDN)

    J'ai créer un nouveau projet (au extension \CLR) WindowsConsole


    Mon code est le suivant :


    #include "stdafx.h"
    #include <vector>

    using namespace System;
    using namespace std;
    //using System.Concurrency;

    int main(array<System::String ^> ^args)
    {
    vector <int> a;
    a.resize(10);

    for (int i=0; i< a.size(); i++){
    a[i] = i;
    }

    Parallel.For(0, 100, delegate(int i) {
    a[i] = a[i]*a[i];
    });
    Console::WriteLine(L"Hello World");
    return 0;
    }
    2/ -> Le tutorial inqdique d'utilisé la ligne Commenté using System.Concurency; -> Cela ne passe pas à la compilation (normal ou pas ? )
    [Edit] -> C'est pas cu c# donc c'est normal ... [/edit]

    3/ -> Le code précédent ne compile pas, car il n'arrive pas à trouver les instruction propre à TPL (Parallel.For), A première vue il me manque des inclusions (puisque le using ne passe pas), comment les connaitre ?

    Merci d'avance

    ++ Beleys


    [Edit] à première vue, je me suis basé sur un tutorial basé sur C# d'ou mes problème, ... quelqu'un aurait il des références en C++ basiques, car mm la doc de cette bibliothèque ne contient que des exemples C# ou VB ....[/Edit]

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Il faut sans doute ajouter une référence (ou un #using puisqu'on est en C++/CLI) pour pouvoir utiliser System.Concurrency...
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 31
    Par défaut
    L'inclusion était donc :
    using System::Threading;


    par contre, je ne trouve toujours aucune doc sur la TPL en C++ (seulement en C# et en VB ...), je vais bien finir par trouver

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Apparemment, ça utilise des delegates, donc ce doit être beaucoup moins pratique en C++/CLI où à ma connaissance, on ne peut pas faire de delegates anonymes comme en C#...
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 31
    Par défaut
    Après un petit détour sur le forum MSDN,
    La TPL fonctionne bien en C++ avec Visual C++ 2005 + Framework 3.5 + Installation des intructions TPL

    Pour avoir un petit exemple rapidement fonctionnel:
    -> Nouveau projet CLR
    -> Ajouter les références System.Core et System.Threading

    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
     
    #include "stdafx.h"
    #include <vector>
     
    using namespace std;
    using namespace System;
    using namespace System::Threading;
     
    vector <int> a;
    void ParallelBody(int i)
    {
      a[i] = a[i]*a[i]; 
    }
     
     
    int main(array<System::String ^> ^args)
    {
      a.resize(10);
      for (int i=0; i< a.size(); i++){
        a[i] = i;
      }
     
      Parallel::For(0, a.size(),  gcnew Action<int>(ParallelBody));
      return 0;
    }
    C'est une tout petit exemple inutile mais permettant d'avoir un premier apercu du fonctionnement;

    Encore merci de votre aide.

    Beleys

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

Discussions similaires

  1. News Visual C++ 2005 Gratuit et autres versions
    Par farscape dans le forum Visual C++
    Réponses: 3
    Dernier message: 30/08/2007, 12h20
  2. [IDE] Visual Studio 2005 Express
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 130
    Dernier message: 23/12/2006, 15h08
  3. En attendant la relève de Visual studio 2005…
    Par farscape dans le forum MFC
    Réponses: 22
    Dernier message: 24/11/2005, 14h27
  4. DX 9 et visual.net 2005 ?
    Par ilimo dans le forum DirectX
    Réponses: 1
    Dernier message: 27/07/2004, 10h55

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