#1 Le 29/05/2012, à 02:10
- moktar bouain
Affecter chaque thread sur un core avec pthread
Bonjour,
J'aimerais écrire un code qui permet d'affecter chaque thread sur un core.
Alors je fais quelques recherches et j'ai essayé d'écrire un code qui permet de faire ça.
D'après quelques recherches, j'ai trouvé que "sched_setaffinity" de pthread peut me donner un résultat. Ci dessous mon code, j'ai essayé de faire ça mais il n'ai pas marché:
#include <pthread.h>
#include <stdio.h>
#include <sched.h>
#include <sys/types.h>
// Number of CPUS
int n_cpus = 2;
int n_threads = 2;
int thread_counter = 0;
void *thread_func(void *thread_id)
{
cpu_set_t cpuset;
int threadnum = (int) thread_id;
CPU_ZERO(&cpuset);
CPU_SET(threadnum % n_cpus, &cpuset);
CPU_CLR(1, &cpuset);
sched_setaffinity(0, sizeof (cpuset), &cpuset);
printf("Thread %d: Hello World!\n", threadnum);
return (void*)NULL;
}
void *thread_func1(void *thread_id)
{
cpu_set_t cpuset;
int threadnum = (int) thread_id;
CPU_ZERO(&cpuset);
CPU_SET(threadnum % n_cpus, &cpuset);
CPU_CLR(1, &cpuset);
sched_setaffinity(0, sizeof (cpuset), &cpuset);
printf("Thread %d: Hello World!\n", threadnum);
return (void*)NULL;
}
int main(int argc, char* argv[])
{
int threadnum;
int i;
printf("Main process: Hello world!\n");
pthread_t thread;
pthread_attr_t thread_attr;
pthread_attr_init(&thread_attr);
threadnum = 0;
pthread_create(&thread, &thread_attr, thread_func, (void *)threadnum);
threadnum = 1;
pthread_create(&thread, &thread_attr, thread_func, (void *)threadnum);
return 0;
}
Alors , y a-t-il quelqu'un qui peut m'aider ?
Merci d'avance.
Moktar.
Hors ligne
#2 Le 29/05/2012, à 08:22
- telliam
Re : Affecter chaque thread sur un core avec pthread
pourquoi fait tu un CPU_CLR apres un CPU_SET???
a mon avis il faut virer le CPU_CLR
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#3 Le 29/05/2012, à 11:16
- moktar bouain
Re : Affecter chaque thread sur un core avec pthread
Bonjour,
Merci telliam, Oui c'est une erreur, j'ai enlevé.
Pour le reste??
Dernière modification par moktar bouain (Le 29/05/2012, à 11:17)
Hors ligne
#4 Le 29/05/2012, à 14:10
- telliam
Re : Affecter chaque thread sur un core avec pthread
qu'est ce qui ne marche pas?
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne