..


Liens sponsorisés

La programmation concurrente dans POSIX C

Article écrit par Mark Frison
Page 1 sur 5

Tous les systèmes d'exploitation modernes prennent des années à être un modèle de multi-processus de gestion, l'attribution de temps d'exécution et d'espace mémoire pour les différents programmes fonctionnant simultanément. Ces dernières années, principalement en raison de l'omniprésence de la communication en réseau, ce concept a été étendu pour le logiciel, puis en divisant les flux même processus multiples de contrôle des threads. Cette nouvelle approche apporte d'énormes changements à la structure du logiciel, à la fois en théorie et en pratique, comme cela arrive toujours, la modularité et l'expressivité sont payés en termes de complexité de logiciels ont augmenté.

Les langages de programmation les plus récentes, à partir de Java, toutes les API offrent natif pour créer et gérer les discussions, les systèmes basés sur des machines virtuelles telles que Java et C # ont le développeur d'un niveau d'abstraction cohérente sur cette question et tous les autres doit s'appuyer sur les primitives du système d'exploitation, souvent encourir des problèmes de portabilité du code. Dans ce contexte, les bibliothèques font partie de threads POSIX (pthreads) pour permettre aux développeurs C aussi un minimum de garantie de portabilité entre différents systèmes.

Prérequis

Cet article est destiné à toute personne désireuse d'aborder le thème de la programmation concurrente dans les langages de bas niveau. Dans cette présentation suppose que le lecteur a déjà acquis une connaissance de base du langage C ne seront pas traités comme des sujets de base tels que, par exemple la gestion de la mémoire, et les types de données.

Les bibliothèques de threads POSIX

Comme faciles à deviner à partir du nom, les bibliothèques de threads POSIX font partie de l'ensemble de POSIX (Portable Operating System Interface [pour Unix]). Citant la définition de «pthread [...] spécifie un ensemble d'interfaces (fonctions, fichiers d'entête) pour le processus de programmation filetée pour [...] unique peut contenir plusieurs threads, qui sont tous d'exécuter le programme d'examen [...] La mémoire même part globale (segments de données et tas), mais ses Chaque thread a propre pile. " Cet extrait décrit exactement ce qui est impliqué dans plusieurs programmes dans un threads POSIX:

  • contrôler les flux multiples (threads) en un seul processus;
  • partage de la mémoire contenant le code (segment de données) et de mémoire dynamique (segment tas);
  • pile privé.
Que ne dit pas clairement le statut des documents, notamment ceux tels que pointeur d'instruction de base »et pointeur de pile, donc nous précisons que tous les enregistrements sont strictement privées à chaque thread et sauvé / restauré lorsque le flux de contrôle est passé de entre les threads (commutation thread).

Utilisez le standard POSIX fournit un haut niveau d'intégration entre tous les systèmes compatibles POSIX comme, par exemple, GNU / Linux, Mac OSX, BSD et même Windows (avec quelques ajouts). Tout au long de cet article, nous nous référerons à l'utilisation de GCC sous GNU / Linux, bien sûr, toutes les considérations sont reportés à un autre type POSIX environnement.

Une première (mauvaise) par exemple

La bibliothèque fournit pthread.h tout ce qu'il faut pour la programmation dans un multi-threads-, plutôt que de faire une simple liste des primitives fournies, nous allons présenter un exemple pratique de temps en temps en discutant de leurs différences.

Considérons donc le problème suivant: le programme doit lire plusieurs fichiers virement bancaire de la cueillette et / ou de dépôt pour être faite à un compte, alors ces fichiers ont la forme suivante:






 120







 -550







 896







 5541







 -85







 ...



Pour accélérer différents threads "caissier" fonctionnent chacun sur un seul fichier et de compte mis à jour simultanément à la clientèle est, nous avons effectué toutes les opérations dans l'état de la sortie du compte.

Dans la même catégorie ...
E-Learning
HTML (Cours) HTML (Cours)
Le langage de balisage pour le Web à partir de 29 €.
Javascript (Cours) Javascript (Cours)
Guide complet pour les scripts côté client. A partir de 39 €.
Linux (Cours) Linux (Cours)
Guide complet de système open-source. A partir de 49 €.
Liens sponsorisés