threads à l'intérieur d'un fil?

Je veux mettre en œuvre diviser et conquérir l'aide de pthread, mais je ne sais pas ce qui va se passer si je créer plusieurs threads dans un thread.

À partir de ma compréhension, si la machine dispose d'un processeur 2-coeur, il ne peut traiter que 2 threads en même temps. Si il y a plus de 2 threads, les autres threads avoir à attendre pour les ressources, donc si j'ai créer plus de plus en plus de fil alors que je vais plus profond, en fait, il ne peut pas augmenter la vitesse de l'algorithme depuis seulement 2 threads peuvent être traitées en même temps.

Je fais un peu de recherche en ligne et il semble que les fils au niveau supérieur peut être inactif, seules celles qui sont au niveau le plus profond de rester actif. Comment atteindre cet objectif? Aussi, si un fil supérieur reste inactive, elle affecte la canette?

"il semble que les fils au niveau supérieur peut être inactif, seules celles qui sont au niveau le plus profond rester actif" - est-ce une fonctionnalité que vous voulez, ou un état de fait? Si c'est une déclaration de fait, il n'est pas vrai. Au moins, il n'est pas vrai, sauf si vous écrivez du code pour obtenir la haute threads pour devenir "inactif".
Je suis curieux de savoir: quel problème que vous souhaitez résoudre, et de quelle manière? Pourquoi pensez-vous que de niveau supérieur peuvent être inactif est utile pour faire cela?
c'est un état de fait, mais je ne sais pas comment faire pour y arriver. si le haut de son fils dormir, ne les threads ils se reproduisent continuer à s'exécuter?
pas de problème exact, mais je peux donner un exemple simple, mergesort. depuis dans mergesort on peut se concentrer uniquement sur le niveau le plus profond, im me demandais si on peut faire la partie supérieure de threads inactifs, de sorte que le processeur peut traiter les fils au niveau plus profond.
Le truc c'est: le frai fils coûts de cycles. Si un thread génère 2 enfants et puis s'en va dormir en attente pour eux de revenir, au lieu de cela il est moins cher de spawn 1 seul thread, et ensuite faire le travail de l'autre thread lui-même.

OriginalL'auteur Tony | 2012-05-15