Bonjour,
Comment passer un programme MFC en multi coeurs ?
Merci
cjacquel
Bonjour,
Comment passer un programme MFC en multi coeurs ?
Merci
cjacquel
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.
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 tronchepour 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)
Partager