Bonjour
Le but est de savoir combien de threads peuvent etre executer simultanément c'est à dire que j'ai un executable qui réalise une opération pendant un temps donné. Cet executable prend en paramètre le nombre de threads qu'il va executer simultanément. Ce que j'aurais aimé savoir c'est le nombre limite de création de threads.
J?ai
réussi à "coder" quelque chose sous Windows et j'obtiens un nombre
de threads de 2000 environ c'est-à-dire que j'en crée un maximum
jusqu'aux limites de la machine et ce nombre limite est apparemment 2000 (La machine ne sature pas mais elle ne va pas plus loin que ce nombre.)
J'ai ensuite effectué la même opération
sous linux et je ne dépasse pas les 200. Contrairement à Windows où lorsque j'arrive autour des 2000 threads, la machine ne rame pas, sous linux c'est atroce... Je trouve cela très bizarre et
je me demande si cela ne viens pas de mon code sous linux. J'utilise ces fonctions:
Je déclare comme ceci
pthread_t handle[1024] ; //Je voudrais créer 1024 threads (par exemple)
Ensuite les créations des threads :
While (i != cpt) //cpt contient le nombre de threads que je souhaite créer
{
i
f ( pthreat_create(&handle[i], NULL, " Nom du thread ", NULL)<0)
{
printf("begin thread error");
return error
}
i++;
}
Il
y aurait-il quelque chose qui ne va pas dans ce code "simplifié" qui
ferait que je ne peux pas créer autant de threads que sous windows?
Il faut savoir que les ressources de la machine linux (Mandriva, récente version) sont équivalentes voir supérieures à la machine Windows (Windows XP SP2) ce qui rend le problème encore plus bizarre, du moins à mes yeux.
J'espere avoir été clair
Merci de votre aide
