Det er ikke usansynligt at der er en øvre grænse for hvormange tråde du kan lave på din Linux. Det er nok ikke så meget et spørgsmål om en begrænsning i memory, men mere en begrænsning i Linux og eller gcc. Hvis du virkelig har brug for at lave mere end 250 tråde skal du sansynligvis rekompilere din linux kerne med en større limit.
Jeg er ret sikker på at der er en grænse, jeg ved ikke om den er ved 250 eller 500 eller ...
Jeg er også ret sikker på at du kan ændre denne grænse ved at rekompilere din kerne (og måske også lib-gcc). Men jeg ved ikke hvordan, det afhænger nok også af hvilken Linux du har.
Prøv at søge på f.ex. "Max number of threads" på google, du er ikke den første med det problem.
8MB * 256 svarer fint overens med de 2GB addressspace som vist er std på kerne 2.6, 8MB er dog nok lidt i overkanten af hvad jeg har behov for, så jeg kan godt sætte den ned til noget mindre, fx. 0.5MB.
int main(int argc, char *argv[]) { printf("Start:\n"); pthread_t thread[NTHREAD];
/* Set some limits on the stack size, so we don't use the default of 8MB */ pthread_attr_t stack_size_custom_attr; pthread_attr_init(&stack_size_custom_attr); pthread_attr_setstacksize(&stack_size_custom_attr, STACKSIZE);
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.