URL: https://linuxfr.org/forums/programmation-c--2/posts/comment-effectuer-une-tache-le-plus-rapidement-possible-threads-fork Title: Comment effectuer une tache le plus rapidement possible ? threads / fork() ... ? Authors: didjoman Date: 2012年09月09日T11:53:13+02:00 Tags: thread, calcul_parallèle, programmation_concurrente, concurrency, concurrent_programming, mathématiques et fork Score: 0 Bonjour, en fait j'ai pri un petit exemple : ****calculer la somme des nombres premiers en dessous de 2 millions.**** Et J'aimerais effectuer cette tâche le plus rapidement possible, quelque soit les ressources ou la mémoire consommée. (Enfait, j'ai un même code, et ce que je veux c'est le paralléliser). ### Les Threads : J'ai fait un test dans un langage appelé Scala (proche du java), où j'utilise des threads. Cependant le résultat n'est pas très concluant : le mieux que j'arrive à faire c'est de passer de 1.1sec à 0.7. Pour cela : je fais un (ou plus) thread pour la somme des nombres de 1 à 1m puis un autre pour ceux de 1'000'001 à 2m (par exemple). ### Les Processus (fork) : Un ami m'a orienté vers l'utilisation de fork, en me disant qu'avec les threads, la capacité du processus principale est répartie entre les threads d'où la faible optimisation optenue. Sur google j'ai lu que les threads pouvait ne pas forcément être un bonne idée car il y a copie de tout le contexte d'execution qui prend du temps. ### Clone ? Une variante de fork ? ### Autre ? Dans ce cas, ne peut on pas dire au système que notre processus peut utiliser toutes les ressources et utiliser les threads ? (Solution sans doute un peu naïve et fantasque ?) Est-ce vrai ? Qu'en est-il et comment faire au mieux ? Merci.

AltStyle によって変換されたページ (->オリジナル) /