Question

J'ai une question concernant la mise en œuvre de pthread sur Linux.

Supposons qu'un processus a 5 fils. Maintenant, comment le planificateur voit ces fils (ou ne marche pas du tout voir). par exemple. Lorsque le programmateur est appelé, il ne planifie que le processus principal, et ensuite la charge de son du processus principal pour programmer entre chacun de ses fils.

Ou bien dans l'autre sens, que les horaires de chaque ordonnanceur de fils comme il est un processus séparé.

Était-ce utile?

La solution

Pour Linux moderne (NPTL de mise en œuvre de pthread), les horaires de planificateur threads, un fil est considéré comme un « processus légère ». pthread_create est mis en œuvre en termes de clone appel système.

Autres conseils

Linux chaque horaire fil comme si elle est un processus avec une portée de PTHREAD_SCOPE_SYSTEM. La mise en œuvre de nptl peut utiliser plusieurs processeurs.

Logan dit, chaque fil est prévue de manière indépendante.

Cependant, si vous le souhaitez, vous pouvez utiliser des groupes de contrôle de processus Linux pour programmer des groupes de threads à la place.

groupes de contrôle des processus font la planification d'un peu plus inefficace, mais il peut être beaucoup plus juste.

Une utilisation qui est devenu très populaire est de mettre tous les processus et les fils créés par chaque ATS dans un groupe témoin par ATS. Cela se traduit par toutes les applications graphiques d'un utilisateur étant prévue au même niveau que son noyau 24 fils compilent qu'il a lancé dans une fenêtre de terminal. Les applications graphiques obtiennent 50% et la compilation obtient 50%. S'il ouvre une autre fenêtre de terminal et commence à compiler glibc avec un autre 24 fils de discussion, il se déplace à 33% des applications de bureau, compilation du noyau de 33% et 33% glibc compilation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top