Est-il possible de verrouiller un processus sur une CPU?

Je pense à développer une application qui, sur une machine à six cœurs, exécutera six tâches asynchrones, une sur chaque cœur.

Mais est-il possible de verrouiller les tâches sur leur propre kernel?

L’idée est qu’ils s’exécutent seuls, mais qu’ils communiquent parfois sur une zone de mémoire partagée. Cependant, je souhaite que les tâches soient exécutées aussi facilement que possible.

Le concept que vous recherchez est appelé “affinité de fil”. Comment est-il implémenté et les interfaces à demander sont spécifiques au système d’exploitation.

Sous Linux, essayez sched_setaffinity () . glibc peut également offrir pthread_attr_setaffinity_np ().

taskset -c cpunum yourprocess 

fait ce que tu veux Il est possible de fournir des PID à la place, vous pouvez ainsi définir des threads uniques sur un processeur. Si vous souhaitez modifier l’affinité du processeur à partir de votre propre programme, utilisez sched_setaffinity() .

Pas de locking, mais il est possible d’associer une affinité de processeur à un processus

Juste pour les enregistrements, une autre méthode, sans programmation: Ouvrez le Gestionnaire des tâches, allez dans l’onglet Processus, cliquez avec le bouton droit sur votre processus et choisissez Définir l’affinité …