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 :

Passer en multi coeurs


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    907
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 907
    Points : 372
    Points
    372
    Par défaut Passer en multi coeurs
    Bonjour,

    Comment passer un programme MFC en multi coeurs ?

    Merci
    cjacquel

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 584
    Points : 7 721
    Points
    7 721
    Par défaut
    Bonjour,

    Les MFC donc vraisemblablement sous Windows; Windows est compatible multicœurs depuis quelques années déjà, et les applications utilisant les MFC fonctionnent, donc les MFC sont utilisables dans un environnement multicœurs sans aucune intervention.

    Le multicœurs permet essentiellement un multi-threading plus performant qu'un monocœur.
    Maintenant est-ce que les MFC utilisent optimalement le multi-theading? Là évidemment non.
    Les MFC s'appuient sur
    • Win32 qui est compatible multi-threading, mais aide peu (par exemple, les objets graphiques sont normalement ré-entrant)
    • Le langage C++ qui est compatible multi-threading, mais n'est pas pas un langage intégrant implicitement le parallélisme. Il faut utiliser des threads ou des outils spéciaux (OpenMP, etc...)
    • La bibliothèque STL du C++ qui a des versions compatibles multi-threading et des objets pour le gérer (std::thread, std::async, ExecutionPolicy, ...)

    Il faut commencer par vérifier que la bibliothèque est bien multi-thread (depuis récemment toutes le sont sous Windaube), ensuite on peut effectuer des traitements dans des threads, le système exécutera ces threads dans des cœurs différents. Les MFC devraient fonctionner, les problèmes de ré-entrance et de protection de ressources sont à suivre de la même manière que pour tout objet du langage.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 674
    Points : 10 684
    Points
    10 684
    Par défaut
    Le problème des MFC, c'est que c'est une surcouche de la bibliothèque winapi (ou Win32) ... bibliothèque des années 90-95 et que Microsoft tente de remplacer depuis plus de 10 ans.

    Le problème c'est qu'elle(s) est (sont) très bas niveau et qu'il faut:
    • tout faire à la main: gestion des threads, gestion du réseau, gestion des notifications applications, ...
    • dépendre de composants plus ou moins bien codés lorsqu'ils existent: parseur JSON ou XML, intégration d'une vue web HTML 5, ...


    Sans parler de la prise de tronche pour bien gérer:
    • l'écran: réduire/ supprimer les scintillements, gérer une transparence partielle, virer ces bitmaps, ... 90-95 c'était l'époque des cartes graphiques 2D - avec une palette de couleurs
    • les entrées claviers: les évènements keyup, keypress et keyrelease qui se marchent de temps en temps sur les pieds et que Windows aussi gère certaines touches


    Et enfin, j'ai vu passer dans la bible MFC (de Charles Petzold) que la bibliothèque MFC est une bibliothèque objet et certaines méthodes non documentées étaient de temps en temps nécessaire pour bien gérer la mémoire ( )

    Et pour finir, attends-toi de plus en plus à
    • utiliser les nouvelles API de Windows: gestion des droits, gestion des dossiers spécifiques, ...
    • subir/ adopter la nouvelle politique de Microsoft depuis Windows 8: la fonction getversion dépréciée, ton application ne fonctionne plus sous Windows XP, ...


    Et notamment , les condition variables pour la gestion des threads. (<- lien MSDN)

Discussions similaires

  1. threadpool multi-coeurs, une utopie ?
    Par gorgonite dans le forum Framework .NET
    Réponses: 11
    Dernier message: 29/01/2010, 09h49
  2. Réponses: 12
    Dernier message: 06/01/2009, 18h43
  3. programmation multi-coeur ?
    Par sunmat dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 31/10/2008, 13h20
  4. Réponses: 5
    Dernier message: 13/10/2008, 01h23
  5. Multi coeur et PBOs
    Par NiamorH dans le forum OpenGL
    Réponses: 11
    Dernier message: 23/04/2007, 16h59

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