Equivalent de SetThreadPriority sous Linux (pthreads)
Donné le code suivant, je me demandais ce que l'équivalent de bits de code dans linux en supposant que les pthreads ou même en utilisant le Boost.Fil API.
#include <windows.h>
int main()
{
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
return 0;
}
source d'informationauteur Gelly Ristor | 2012-06-04
Vous devez vous connecter pour publier un commentaire.
L'équivalent de
SetThreadPriority
dans linux seraitpthread_setschedprio(pthread_t thread, int priority)
.Vérifier la page de man.
EDIT: voici l'exemple de code équivalent:
Cet exemple est pour la programmation par défaut de la politique qui est SCHED_OTHER.
EDIT: fil de l'attribut doit être initialisé avant d'en faire usage.
Vous voulez:
La norme POSIX comprend
pthread_setschedparam(3)
comme mentionné par d'autres réponses. La plupart du temps il POSIX thread library fonction est mentionné lorsque l'on parle de threads en temps réel, mais la norme POSIX ne limite pas son utilisation uniquement pour le domaine de threads en temps réel. Cependant, dans Linux, son usage n'est vraiment utile que si l'aide en temps réel l'ordonnancement des classesSCHED_FIFO
ouSCHED_RR
comme seulement les classes d'ordonnancement permettre à plus d'une valeur pour le paramètre priorité. Voir ce un débordement de pile répondre pour une illustration.Heureusement ou malheureusement, c'est une question de point de vue, il semble que les deux principaux flux de Linux, POSIX thread library implémentations (obsolète de LinuxThreads et le courant NPTL mise en œuvre) ne sont pas entièrement conformes à POSIX en ce que la "valeur de nice" n'est pas spécifique mais thread paramètre spécifique, de sorte qu'il semble que vous pourriez utiliser
setpriority(3)
pour changer la gentillesse d'un thread dans Linux. Cette affirmation est basée sur les notes de compatibilité danspthreads(7)
page de manuel (recherche de la "nice de valeur" à la page); je n'ai pas réellement testé dans la pratique (du simple chose à faire).Si vous décidez d'utiliser la POSIX ne respectant pas les moyen de changer le fil gentillesse, notez qu'il y a de la menace de la possibilité que quelqu'un décide de fixer les cités de non-conformité, auquel cas il semble y avoir aucun moyen de changer la priorité des threads sous Linux si vous utilisez normal de la classe d'ordonnancement (
SCHED_OTHER
).Quelque chose comme
pthread_setschedparam()
et la combinaison de la politique et de la priorité.Je suppose que vous utilisez des politiques
SCHED_FIFO, SCHED_RR
où vous pouvez spécifier la priorité de thread.Pour ceux qui peuvent être à la recherche pour BSD base de solutions de système d'exploitation tels que mac os ou iOS, vous pouvez envisager de définir la priorité du thread à l'aide de mach à la place de la POSIX équivalent si nécessaire.
Source: https://developer.apple.com/library/content/documentation/Darwin/Conceptual/KernelProgramming/scheduler/scheduler.html