2017-03-21 2 views
0

J'ai une minuterie créée avec une fonction timer_create(CLOCK_REALTIME, &events, &timer), où timer est un identifiant de minuteur par processus unique (selon man).Comment définir l'affinité pour une minuterie en C/C++ sous Linux?

Maintenant, il y a sched_setaffinity fonction pour définir l'affinité pour un PID donné.

Comment puis-je régler l'affinité pour ma minuterie? Pas tout le programme, mais seulement le fil du minuteur. Je ne suis pas sûr que l'identification de minuterie est la même chose que PID.

+1

Est-ce que quelqu'un lit plus de documentation? voir ici: https://linux.die.net/man/2/timer_create noter l'option SIGEV_THREAD_ID –

Répondre

0

Ok, j'ai la réponse.

Une façon de le faire est comme ça:

  1. Créer un nouveau thread en utilisant pthread.
  2. Définissez l'affinité pour ce nouveau thread.
  3. Dans la routine d'entrée du nouveau thread, initialisez le timer (create et set). Nous pouvons utiliser SIGEV_THREAD comme il est commode d'utiliser.
  4. Le thread minuteur POSIX, ainsi que les threads créés lorsque le minuteur déborde, héritent de l'affinité de notre thread créé à l'étape 1.
  5. Rejoindre le thread de l'étape 1 avec le thread principal. Ce thread cessera d'exister, mais son thread enfant (timer) persistera.