..


Liens sponsorisés

Programmation concurrente en C + +

Article écrit par Stefano Cancedda
Page 1 sur 6

La programmation de séquences offre la garantie que les instructions sont toujours exécutées dans l'ordre, sans variations. Le comportement résultant est déterministe: insérer les mêmes entrées, la sortie est obtenu le même résultat.
Pour chaque programme fonctionnant sous le système d'exploitation crée un processus qui donne un espace mémoire protégé. Cela donne la possibilité que des processus indépendants fonctionnent simultanément sans erreurs.

Différentes (et plus avancé) est la programmation concurrente. Avant le siège doit être introduit et comment il fonctionne, à mon avis, un type particulier d'objet appelé un thread noyau.

Comme les discussions des objets du noyau sont gérés par le système d'exploitation, et ont deux caractéristiques fondamentales:

  • Chaque thread dispose d'une structure de données privées, qui stocke sa propre pile, des informations d'exception, la prochaine instruction à exécuter;
  • Chaque part fil avec l'ensemble du processus une zone de mémoire commune.
L'utilisation de fils de plusieurs avantages en termes d'exécution. En particulier, nous exploiter pleinement les performances des processeurs multi-core, qui sont actuellement la technologie dominante dans le marché des ordinateurs personnels. Il est impensable que d'une certaine complexité des applications modernes sont conçus de manière séquentielle, ce qui pourrait profiter de l'heure, seul l'un des principaux que la machine fournit.

Comme autre avantage, il peut être vu comme deux processus différents exécutent le même code, peut-être avec des paramètres différents, sont moins efficaces que deux threads qui peuvent directement exploiter la mémoire partagée. Dans un système qui ne supporte pas les threads, si vous voulez exécuter plusieurs fois le même programme, vous devez créer plus d'emplois basés sur le même programme. Cette technique fonctionne mais est un gaspillage de ressources et est plus lente.

Troisièmement, les fils ont l'avantage, s'ils sont appelés les bloqueurs I / O: au lieu d'attendre l'événement déclenché par l'utilisateur arrêter l'exécution de l'algorithme, vous pouvez commencer un nouveau thread et d'éviter les interruptions inutiles qui aggrave la performance globale.

Contrairement à la programmation concurrente a besoin du soutien de constructions de synchronisation, qui sont fondamentales pour éviter les accès aléatoires aux communes provoquer des erreurs de mémoire de la production. Expose également le programmeur à une série d'erreurs souvent mal nourris en raison du comportement imprévisible de programme déterministe.

Outre cela, les constructions de synchronisation ont un coût, tant en termes de temps machine nécessaire pour exécuter leur code dans une perte de performance causée notamment par les attentes générées par ces constructions, afin de garantir l'équité dans l'exercice de concurrent.

Les principaux objets qui permettent la gestion de la compétition sont prévus ci-dessous et décrits en détail dans les paragraphes suivants:

  • Éléments volatils
  • Fonctions imbriquées
  • Feux de circulation
  • Les sections critiques
  • Evénements
  • Minuterie
  • Mutex
Chacun de ces éléments forme de façon naturelle de résoudre une classe spécifique de problèmes simples. Pour des problèmes plus complexes de manière simple de combiner ces objets ensemble pour obtenir un résultat correct et le passage satisfaisante de la résolution de problèmes qui nécessitent l'utilisation de l'un des premiers et les problèmes qui sont définis comme ci-dessus est un complexe très critique. La combinaison d'objets de synchronisation peut être compliqué, au mieux, parce que vous ne pouvez pas obtenir un rendement suffisamment élevé dans le pire des cas, parce que vous ne pouvez pas trouver facilement la solution qui garantit l'exactitude du résultat. Non moins le pire des cas: il ya un bogue fatal et n'a pas d'identifier immédiatement. Ce moment est très fréquent, tant en raison de la sensibilité des questions, nous discuterons, est le fait que le débogage est toujours problématique dans un environnement concurrentes, les flux sont en exécution déterministe fait, chaque exécution du programme, l'ordre le processeur effectue les opérations est toujours différent.

Dans la même catégorie ...
E-Learning
ASP.NET (Cours) ASP.NET (Cours)
Cours complet pour construire des applications Web à partir de 49 €.
Excel (ebook) Excel (ebook)
Créer des feuilles de calcul et de calcul. À seulement 25 €.
Front Page (ebook) Front Page (ebook)
Créer des pages Web sans connaître le HTML. À seulement 25 €.
Liens sponsorisés