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

Améliorations du traitement parallèle des applications

Tech - Par iTPro - 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.

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 gratuitement cette ressource

Cybersécurité sous contrôle à 360°

Cybersécurité sous contrôle à 360°

Avec Cloud in One, les entreprises ne gagnent pas uniquement en agilité, en modernisation et en flexibilité. Elles gagnent également en sécurité et en résilience pour lutter efficacement contre l’accroissement en nombre et en intensité des cyberattaques. Découvrez l'axe Cybersécurité de la solution Cloud In One.

Tech - Par iTPro - Publié le 03 octobre 2011