000
20.02.2008, 20:14 Uhr
~CPP-Fan
Gast
|
Hallo!
Ich hatte mal zum Testen die Anzahl der maximalen Threads mit echo 100000 > /proc/sys/kernel/threads-max auf 100000 hochgesetzt und die Anzahl getestet. Gestartet wurden ca. 380 Threads (im Gegensatz zu fast 18000 Threads vorher). Anschließend gab trotz Rücksetzen auf 16383 und Serverneustart auch das folgende Programm nur 381 Threads aus und gibt ab dem 382. Thread die Fehlermeldung "12 Cannot allocate Memory" aus:
C++: |
#include <iostream> #include <pthread.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h>
#define NUM_THREADS 2000
using namespace std;
void *io(void *t){ int *i=reinterpret_cast<int *>(&t); cout << "Thread - Nummer: " << *i << endl; }
int main(){ int t,rc; pthread_t threads[NUM_THREADS];
for(t=0; t<NUM_THREADS; t++){ rc = pthread_create(&threads[t], NULL, io, (int *) t); if(rc!=0){ cout << t << " ERROR; return code from pthread_create() is " << errno << " " << strerror(errno) << endl; } } sleep(10); }
|
Was kann ich tun, bzw. was hab ich falsch gemacht? Wurden durch das Hochsetzen irgendwelche Speichereinstellungen geändert?
Vielen Dank für eure Hilfe + viele Grüße, Marc |