Y a-t-il un paradigme qui vous donne un état d'esprit différent ou qui a une vision différente de l'écriture d'applications multi-thread? Peut-être quelque chose qui semble très différent comme la programmation procédurale pour fonctionner la programmation.Le paradigme du filetage?
Répondre
La concurrence a beaucoup de modèles différents pour différents problèmes. La page Wikipedia pour concurrency énumère quelques modèles et il y a aussi une page pour concurrency patterns qui a un bon point de départ pour différents types de manières d'approcher la concurrence.
L'approche que vous prenez est très dépendante du problème rencontré. Différents modèles résolvent différents problèmes pouvant survenir dans des applications concurrentes, et d'autres s'appuient sur d'autres.
Dans la classe I a été enseigné que la simultanéité utilise mutual exclusion et synchronization ensemble pour résoudre les problèmes de concurrence. Certaines solutions n'en nécessitent qu'une, mais avec les deux vous devriez pouvoir résoudre n'importe quel problème de concurrence.
Pour un concept très différent, vous pouvez envisager l'immuabilité et la simultanéité. Si toutes les données sont immuables, les approches classiques de la simultanéité ne sont même pas requises. This article explore ce sujet.
Je ne comprends pas vraiment la question, mais si vous commencez à faire du codage en utilisant CUDA, vous avez une façon différente de penser aux applications multi-thread.
Il diffère des techniques générales de multi-threading, comme les sémaphores, les moniteurs, etc. parce que vous avez des milliers de threads simultanément. Ainsi, le problème du parallélisme dans CUDA réside plus dans le partitionnement de vos données et le mélange des blocs de données plus tard.
L'algorithme SCAN est un petit exemple d'une refonte complète d'un problème série commun. Il est aussi simple que:
- Etant donné un ensemble {a, b, c, d, e}
Je veux que le jeu suivant:
{a, a + b, a + b + c, a + b + c + d, a + b + c + d + e}
Lorsque le symbole '+' dans ce cas est un opérateur commutatif (non seulement plus, vous pouvez également faire la multiplication).
Comment faire cela en parallèle? C'est une refonte complète du problème, il est décrit dans ce paper.
Beaucoup plus implémentations de différents algorithmes CUDA peuvent être trouvés dans le NVIDIA website
Eh bien, un changement de paradigme très conservateur est de la concurrence fil centrée sur (tout partager) vers concurrency centrée processus (séparation espace d'adressage). De cette façon, on peut éviter le partage de données involontaire et il est plus facile d'appliquer une politique de communication entre différents sous-systèmes.
Cette idée est ancienne et a été propagée (entre autres) par la communauté OS de Micro-Kernel pour construire des systèmes d'exploitation plus fiables. Fait intéressant, le prototype d'OS Singularity par Microsoft Research montre que les espaces d'adressage traditionnels ne sont même pas requis lorsqu'on travaille avec ce modèle.
L'idée relativement nouvelle que je préfère est transactional memory: évitez les problèmes de simultanéité en vous assurant que les mises à jour sont toujours atomiques.
Voir le OpenMP pour une variation intéressante.
- 1. Filetage fictif du portlet WebSphere Portal
- 2. cx_Oracle et le paradigme de la source de données
- 3. Comment traduire ce paradigme webforms en mvc?
- 4. Filetage en utilisant AJAX
- 5. Filetage ASP.NET & AJAX
- 6. JTable paradigme de conception de filtres multiples
- 7. (MVVM) Voir le modèle Voir le modèle et le filetage
- 8. Filetage dans C#
- 9. Filetage C# - Verrouiller l'objet
- 10. Filetage ASP.NET + question de conception
- 11. Filetage: verrouillage sur dictionnaire générique
- 12. Future.get() et InterruptedException filetage Asynchronous
- 13. Filetage C# et Windows Forms
- 14. Filetage GMail, IMAP et Ruby
- 15. Filetage du serveur TCP en tant que proxy entre l'utilisateur connecté et le socket unix
- 16. Filetage en C#. Tâche interruptible
- 17. Migration du paradigme 'partage de fichiers' dans StarTeam vers un DVCS comme GIT?
- 18. piège Trace/BPT avec le module Python filetage
- 19. L'utilisation de NSOperation pour le filetage crée trop d'objets
- 20. Filetage pour les éléments iframe dans IE
- 21. Paradigme de programmation avec de lourdes contraintes OO
- 22. C# Filetage et utilisation de AutoResetEvent
- 23. Réentrée de code et sécurité de filetage
- 24. Flex-AIR: Filetage principal (Suspendu) ..... POURQUOI?
- 25. Modèle de filetage: chaînage et bouclage
- 26. C# Problème de filetage avec AutoResetEvent
- 27. Filetage lors de l'envoi de courriels
- 28. Filetage dans les applications Web Java EE
- 29. Formulaire de mise à jour C# à partir du filetage et de la classe
- 30. Ai-je besoin de verrouiller les services "en lecture seule" lors de l'utilisation du filetage?