Pouvons-nous utiliser interchangeablement "codage parallèle" et "codage multithreading" sur un processeur unique? P>
Je ne suis pas beaucoup d'expérience dans les deux, Mais je veux déplacer mon style de codage à l'une des réponses ci-dessus. P>
Comme je l'ai trouvé maintenant un jour, de nombreuses applications Single threed sont obsolètes, ce qui serait mieux pour les logiciels futurs industy comme une perspective de carrière? P>
7 Réponses :
Je ne suis pas sûr de ce que vous pensez que "codage parallèle" n'est que du codage parallèle, car je comprends que cela fait référence à la production de code qui est exécuté en parallèle par la CPU, et par conséquent, le code multithread tombe à l'intérieur de cette description. P >
De cette façon, évidemment, vous pouvez les utiliser de manière interchangeable (comme on tombe à l'intérieur de l'autre). P>
Néanmoins, je vais vous suggérer de le prendre lentement et de commencer à apprendre des bases. Comprenez pourquoi le multithreading devient important, quelle est la différence entre les processus, les threads et les fibres, comment vous synchronisez-vous l'un d'eux et ainsi de suite. P>
Gardez à l'esprit que le codage parallèle, comme vous l'appelez, est assez complexe, spécialement comparé au codage séquentiel, soyez donc préparé. Aussi ne pas juste me précipiter. Ce n'est pas parce que vous utilisez 3 threads au lieu d'un seul rendez votre programme plus rapidement, cela peut même le rendre plus lent. Vous devez comprendre la route et les WHYS. Toutes les choses ne peuvent pas être faites parallèles et pas tout ce qui peut, devrait. P>
La question est un peu confuse car vous pouvez effectuer des opérations parallèles dans plusieurs threads, mais toutes les applications multi-threads n'utilisent pas l'informatique parallèle. En parallèle, vous avez généralement de nombreux "travailleurs" qui consomment un ensemble de données pour renvoyer des résultats de manière asynchrone. Mais multithread est utilisé dans une portée plus large, comme une interface graphique, bloquant les E / S et la mise en réseau. P>
Être sur un seul ou plusieurs processeurs ne change pas beaucoup, car la gestion dépend de la manière dont votre système d'exploitation peut gérer des filets et des processus. P>
Multithreading sera utile partout, parallèlement n'est pas un paradigme informatique quotidien, il pourrait donc s'agir d'une "niche" dans une perspective de carrière. p>
Certaines démos que j'ai considéré dans .NET 4.0, les changements de code parallèle semblent plus faciles alors faire des threads. Il y a une nouvelle syntaxe pour "pour les boucles" et d'autres choses à prendre en charge le traitement parallèle. Donc, il y a une différence. P>
Je pense que dans le futur, vous ferez les deux, mais je pense que le support parallèle sera meilleur et plus facile. Vous avez toujours besoin de threads pour les opérations de fond et d'autres choses. P>
Le fait est que vous ne pouvez pas réaliser un "réel" parallélisme sur un seul processeur. Il existe plusieurs bibliothèques (telles que la MPI de C) qui aident un peu sur cette zone. Mais le concept de paralellisme, il n'est pas utilisé parmi les développeurs travaillant sur les solutions populaires em>. P>
Multithreading est courante de nos jours grâce à l'introduction de plusieurs cœurs sur un seul processeur, il est facile et presque transparent de mettre en œuvre dans chaque langue grâce à des types de réflexion et de threadsafe, des méthodes, des classes, etc. De cette façon, vous pouvez simuler le paralellisme. P>
Quoi qu'il en soit, si vous commencez avec cela, commencez par lire des sujets de concurrence et de threading. Et bien sûr, les threads + le parallélisme fonctionnent bien ensemble. P>
Le multithreading n'est pas facile dans pratiquement aucune langue, sauf peut-être à Erlang.
J'ai beaucoup entendu parler de erlang et de paralellisme sur Erlang. Malheureusement, je ne connais pas cette langue. Par multithreading facile, je veux dire créer plusieurs threads et les faire fonctionner de manière cohérente. Je sais que ce n'est pas trivial, mais ce n'est pas si difficile d'envisager de chercher une autre solution à votre problème au lieu de enfiler.
@ Jorge - Je ne pense pas que Erlang utilise des threads, mais des processus légers qui ne partagent pas la mémoire
-1 Pour l'écriture de la programmation multi-filetée est facile. D'après mon expérience, la plupart des gens viennent mieux d'améliorer leur code à un seul fileté ou de reproduire davantage d'instances d'applications Web à une seule-thread.
Il y a définitivement un chevauchement entre multithreading et codage / calcul parallèle, avec les principales différences dans l'architecture de traitement cible. P>
multithreading strong> a été utilisé pour exploiter les avantages de Concurrence forte> dans un seul processus sur un seul processeur avec mémoire partagée. Exécuter les mêmes programmes sur une machine avec plusieurs processeurs peut entraîner une vitesse importante, mais est souvent un bonus plutôt que prévu (jusqu'à récemment). De nombreux OSES ont des modèles de filetage (par exemple, Pthreads ), qui bénéficient de maisons de multiples processeurs. p>
MultiProcessing strong> est le modèle standard pour Programmation parallèle forte> ciblant plusieurs processeurs, des premières machines SMP avec de nombreux CPU sur une grande machine, puis pour cluster informer sur de nombreuses machines et Retour à de nombreuses processeurs / noyaux sur un seul ordinateur. MPI est une norme pouvant fonctionner sur de nombreuses architectures différentes. P>
Bien sûr, on peut programmer une conception parallèle à l'aide de threads avec des cadres de langue comme OpenMP . J'ai entendu parler de Guis / applications multiples qui s'appuient sur un traitement séparé qui pourrait théoriquement fonctionner n'importe où. Pratiquement, il y a plus de l'ancien que celui de ce dernier. P>
La distinction principale est probablement lorsque le programme traverse plusieurs machines, où il n'est pas pratique d'utiliser multithreading et des applications existantes qui partagent la mémoire ne fonctionneront pas. P>
en langage simple multithreading est disponible dans la CPU par lui-même et La programmation parallèle est une tâche explicite soit faite par le compilateur ou mes constructions écrites par les programmeurs "#pragma" p>
codage parallèle fort> est le concept d'exécution de plusieurs actions en parallèle (même heure). P>
Multi-threading sur un seul processeur donne l'illusion de fonctionner dans Multi-threading sur plusieurs cœurs de processeur est vraiment Programmation multi-threadée sur un seul processeur h3>
Programmation multi-threadé sur plusieurs processeurs h3>