Threads limités (Win32) ?

Résolu
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 - 31 août 2004 à 04:00
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 7 sept. 2004 à 00:11
Bonsoir à tous !

Pour tester la robustesse d'un serveur que je suis en train de faire, j'ai codé une petite appli qui crée des threads jusqu'à ce que le système le lui refuse, et elle active à ce moment-là un signal pour que tous ces threads se connectent sur le serveur, dans l'espoir de le faire sauter. Mon serveur passe très bien ce baptême du feu (après une bonne demi-heure de debuggage à cause d'une mauvaise gestion de mes listes chainées, il ne reste plus qu'à résoudre quelques problème de fuite de mémoire), merci pour lui :-p

Néanmoins, je me suis retrouvé assez surpris par le comportement de cette application de test : il est dit dans la documentation que le nombre de threads que peut créer un processus n'est limité que par la mémoire disponible, hors sur mon PC 1 (128Mo) j'obtiens invariablement 1.014 threads (+ celui du processus) et sur mon PC 2 (640Mo), j'obtiens exactement le même nombre de threads :-/

Les deux PCs utilisent Windows XP, Service Pack 1. Quelqu'un a déjà été confronté à çà ? C'est pas que ce soit gênant pour mes tests (un millier de threads, çà suffit amplement lol) mais si je veux gérer plus de 1.014 connexions en même temps, çà ne sera pas possible avec un seul serveur...

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 août 2004 à 10:28
2 Go adressables par ton processus, sur un serveur 3 Go possibles.
1014 * 1 Mo de stack
+ voir reste de ton prog
et devrait pas etre loin du compte.

Sinon abaisser taille de stack de chaque thread au linkage.

ciao...
BruNews, Admin CS, MVP VC++
3
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
31 août 2004 à 12:56
En effet, je ne pensais plus à cette limitation... Merci ! :)
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
31 août 2004 à 20:44
128 Mo de ram pour XP ???
Dois pas etre très stable et très rapide ton systeme.
XP recommande 256Mo minimum, sachant qu'au boot il en prend environ 80.

Je suppose que tu as de la SDRAM.
Essaye de te trouver une barrete supplémentaire, ca doit pas dépasser les 15euros maintenant pour ce genre de RAM.

Shell
0
cs_kelly Messages postés 55 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 9 septembre 2004
7 sept. 2004 à 00:01
je cite MSDN au sujet des syntaxe de AfxBeginThread :

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority THREAD_PRIORITY_NORMAL, UINT nStackSize 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority THREAD_PRIORITY_NORMAL, UINT nStackSize 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );



Il est donc possible de spécifier la taille de la pile pour chaque thread.

Quels sont tes résultats ? Je suis vivement intéressé.
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 sept. 2004 à 00:11
M'etonnerait que Nebula soit en MFC mais en original API c'est idem pour le reglage de la stack du thread.

ciao...
BruNews, Admin CS, MVP VC++
0
Rejoignez-nous