> Tech > Améliorations du traitement parallèle des applications

Améliorations du traitement parallèle des applications

Tech - Par Renaud ROSSET - Publié le 03 octobre 2011
email


Une application parallélisée dans les formes est toujours plus performante qu’une application mono-thread. A mesure que nous avançons dans l’ère des processeurs multi-cœurs, l’évolutivité de votre application en fonction du nombre de processeurs devient critique, et la disponibilité des outils appropriés pour cela est essentielle.

Améliorations du traitement parallèle des applications

Dans Visual C++ 2010, le tout nouveau Concurrency Runtime (ConcRT) fournit une bibliothèque C++ qui permet aux développeurs d’exploiter la puissance du multi-cœurs de manière productive. Le ConcRT utilise la terminologie suivante :

â–  Algorithmes parallèles (algorithmes génériques qui agissent sur des collections de données)
â–  Tâches (un mécanisme servant à encapsuler le travail à accomplir et non la manière dont vous souhaitez le paralléliser)
â–  Agents (utilisation du transfert de messages pour un flux de données à granularité fine et une mise en pipeline des tâches gourmandes en ressources informatiques)


Windows 7 dispose d’un nouvel ordonnanceur de threads léger intitulé User-Mode Scheduling (UMS). Celui-ci permet aux applications hautes performances (au lieu du noyau) de planifier, restreindre et contrôler les temps système dus à des appels systèmes bloquants. Vous ne pouvez pas employer UMS directement pour accélérer votre application, mais en prenant en charge ce niveau de flexibilité pour la gestion des threads au niveau mode utilisateur, vous permettez à des bibliothèques de concurrence de niveau supérieur (telles que ConcRT) de fournir un comportement multithread optimisé. ConcRT tire parti d’UMS en définissant une stratégie d’ordonnanceur (Scheduler Policy) avec le membre SchedulerKind défini sur UmsThreadDefault.

Le bloc de code suivant utilise le traitement parallèle des tâches (et les expressions lambda C++) pour le téléchargement asynchrone de plusieurs fichiers à partir du Web :

Concurrency::task_group tasks; // a task_group
// manages the execution of multiple tasks
Concurrency::concurrent_vector
thumbnails; // concurrent_vector is the thread
// safe equivalent of std::vector
Concurrency::concurrent_vector fileList;
std::shared_ptr
objWebImages =
make_shared();
for( int i = 0;
i < imageUrlList.Image->ResultsCount; ++i )
{
// task_group::run will
// queue a task for execution.
tasks.run( [objWebImages, i, imageUrlList,
&fileList, &thumbnails, this] {
// C++0x lambda expression
// these lengthy operations will now execute
// on a different thread
CString thumbFileName = objWebImages->
DownloadThumbnailImage(
imageUrlList.Image->Results[i]);
CString imageFileName = objWebImages->
DownloadImage(
imageUrlList.Image->Results[i]);
// push_back may be called concurrently from
// different threads at the same time
fileList.push_back(imageFileName);
thumbnails.push_back(CThumbnail::Load(
imageFileName, thumbFileName));
} );
}
tasks.wait(); // first blocking call. this will wait
// for all queued tasks to complete

Globalement, Windows 7 constitue une version pleine d’attraits pour les développeurs. Avec les milliers de nouvelles API Windows proposées aux développeurs natifs, Windows 7 améliore l’utilisation des applications de PC.

Visual Studio 2010 représente l’IDE de prédilection pour exploiter la plate-forme Windows 7. Avec les améliorations apportées à MFC et à ATL, ou encore avec l’ajout de nouveaux concepteurs (designer) et assistants d’IDE, Visual C++ 2010 vous offre la possibilité d’être à l’avant-garde de l’exploitation des fonctionnalités du système d’exploitation.

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 03 octobre 2011