2017-07-24 7 views
1

Étant donné - ID de thread d'un thread.
Exigence - Définit la priorité Linux de l'ID de thread.
Constraint - ne peux pas utiliser setpriority()
Alternate to setpriority (PRIO_PROCESS, ID_fil, priorité)

J'ai essayé d'utiliser ci-dessous

pthread_setschedprio (fil pthread_t, int prio);
pthread_setschedparam (thread pthread_t, politique int, const struct sched_param * param);

Les deux API ci-dessus utilisent pthread_t en tant qu'argument. Je ne suis pas capable de construire (typecast) pthread_t à partir de l'identifiant du thread. Je comprends que la conversion n'est pas possible en raison de différents types.

Existe-t-il un moyen de toujours accomplir cela?

+0

D'où obtenez-vous l'ID de fil? –

Répondre

1

Certains aspects de l'interface pthread_setschedprio sont disponibles pour les ID de threads simples avec la fonction sched_setparam (déclarée en <thread.h>). Le sched_setparam manual page indique que le processus est affecté (ce qui est le comportement POSIX-mandaté), mais sur Linux, it's actually the thread of that ID. Gardez à l'esprit qu'appeler sched_setparam peut directement rompre le comportement attendu des mutex PI et d'autres primitives de synchronisation car l'appel direct n'effectue pas la comptabilité supplémentaire effectuée par les fonctions pthread_ *.

+0

Merci. Cela a fonctionné comme prévu. Vous avez manqué l'API en recherchant sur Google. – user2618142