Threads limités (Win32) ? [Résolu]

Signaler
Messages postés
790
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
-
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++
Messages postés
790
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
7 juin 2007
1
En effet, je ne pensais plus à cette limitation... Merci ! :)
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
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
Messages postés
55
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
9 septembre 2004

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é.
@+
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
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++