Simultanées de programmation c++?
Je continue à entendre parler simultané la programmation de chaque où.
Pouvez-vous les gars jeter un peu de lumière sur ce que c'est et comment c++ de nouvelles normes de faciliter faire de même?
- Articles:Vérification de ces articles, à savoir sur la simultanéité 1. déjeuner Libre est plus 2. articles Sélectionnés par herbsutter 3. Lien vers le pdf
- Si Simultanées de calcul est nouveau pour vous, assurez-vous de vérifier certains articles de base comme en.wikipedia.org/wiki/Concurrent_programming.
Vous devez vous connecter pour publier un commentaire.
La simultanéité est au sujet de votre code à faire plusieurs choses en même temps. Ceci est généralement fait avec explicite de "fils", mais il y a d'autres possibilités. Par exemple, si vous utilisez des directives OpenMP dans votre code, puis d'un compilateur qui prend en charge OpenMP va automatiquement générer des threads pour vous.
Thread est l'abréviation de "thread d'exécution". Dans un single-threaded programme en C++, le démarrage de l'exécution dans le main(), et procède ensuite de manière séquentielle. Dans un programme multi-threadé, le premier thread commence à principal, mais d'autres threads peut être démarré par l'application qui commencent à un utilisateur de la fonction spécifiée. Ces puis exécuter en même temps, ou en parallèle avec le fil d'origine.
Dans C++0x threads sont lancés à l'aide de la
std::thread
classe:Le nouveau C++0x standard prend également en charge:
std::atomic<>
modèle de classe,std::mutex
,std::recursive_mutex
, etc.)std::lock_guard<>
,std::unique_lock<>
)std::lock
etstd::try_lock
fonctions de gestion de l'acquisition de verrous multiples en même temps sans risque d'interblocagestd::condition_variable
,std::condition_variable_any
)thread_local
mot clé de déclarer les données locales de threadJ'ai donné un aperçu plus détaillé de la nouvelle C++0x bibliothèque de threads dans mon article sur devx.com: Plus simple Multithreading dans C++0x
Je vous écris à propos de multithreading et de la concurrence en C++ sur mon blog. Je suis également à l'écriture d'un livre sur le sujet: C++ Simultanéité dans l'Action.
std::thread
etstd::async
.Quand vous dites "comment c++ de nouvelles normes de faciliter" la programmation simultanée, je suppose que vous parlez de la bientôt (?) pour être libéré, C++09 standard.
La nouvelle norme tel qu'il est actuellement dans la forme de projet prend en charge les éléments suivants pour aider à la programmation simultanée:
Peut-être que cette vidéo peut aider à briller un peu de lumière pour vous 🙂
http://channel9.msdn.com/posts/Charles/The-Concurrency-Runtime-Fine-Grained-Parallelism-for-C/
De simultanéité est d'avoir plusieurs threads d'exécution pour un processus donné. Aujourd'hui, le C++ ne prend pas directement en charge. Cependant, plusieurs bibliothèques existent qui lient une fonction donnée à un nouveau fil d'exécution. Unix est la norme la bibliothèque pthreads.
C++CSP2 - Facile de Simultanéité pour C++
http://www.cs.kent.ac.uk/projects/ofa/c++csp/
CSP est une fonction sur un bon simultanées paradigme plutôt que de threads et de serrures et de toutes autres sortes de choses qui sont cloués sur le coup.
(Voir Occam-Pi pour une programmation simultanée de la langue (également basé sur la CSP))
Mes légèrement différente, spécifique pour les orientations futures de paradigmes de programmation:
La simultanéité est sur l'écriture de votre programme, de telle sorte qu'il peut faire plusieurs choses à la fois, si le matériel prend en charge. Actuellement, la plupart des langues ont assez lourd et compliqué des mécanismes pour permettre au programmeur de spécifier ce (par exemple: threads grâce à la synchronisation manuelle, OpenMP pré-processeur directives, etc.).
Que le matériel s'améliore, il va améliorer la horizontale (de plus de cœurs) plutôt que verticalement (plus simple core). Cela signifie que les applications devront avoir latent "simultanéité" afin d'échelle avec "plus rapide" du matériel. Les langues sont actuellement en train d'essayer de le faire évoluer pour mieux prendre en charge cela, pour être dans la position de meilleur langage pour le développement futur.
C++0x est l'ajout de plus d'une prise en charge intégrée pour les "vieilles" méthodes de programmation de la simultanéité. Différents éditeurs de compilateurs sont l'ajout de "nouvelles" méthodes de résumé le modèle de thread et de permettre l'exécution des décisions en temps sur le nombre de threads, etc. (basé sur le matériel de la machine); pour Microsoft en particulier, F#, concurrency runtime, parallel extensions, etc.
Espère que ça aide.
C'est le meilleur article pour comprendre la programmation simultanée: La Programmation Simultanée
Vous permettra d'obtenir une image complète de la programmation simultanée et C++ après l'avoir lu.
Qu'un bref résumé, nous pouvons dire que la programmation simultanée est de faire du multitâche. Lorsqu'un programme est bloqué, il peut faire d'autres choses. Généralement on se bloquer lors de l'attente pour les connexions réseau et de traiter avec des I/O. Nous pouvons faciliter la programmation simultanée à l'aide de
fork()
et bibliothèques de thread.