I am having an estrange upper limit of maximum threads creation. I am using pthreads over kernel
2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200 i686 i686 i386 GNU/Linux and when I reach the 300 simultaneous threads creation EAGAIN is returned by pthread_create().
I am sure that is not a resource lacking, the mem available is almost total and the processor is in idle state.
void *th(void *param)
{
cout << *((int *)param) << endl;
}
int main()
{
cout << sysconf( _SC_THREAD_THREADS_MAX ) << endl; //returns -1
try
{
for(int i = 0; i < 1000; i++)
{
int *no = new int();
*no = i;
(new Thread(th))->Start(no);
//(new EventWaitHandler())->WaitOne(500);
}
}
catch(Exception ex)
{
cout << ex.getMessage() << endl;
}
return 0;
}
Thread class constructor:
void Thread::Start(void* param)
{
int returnValue = 0;
returnValue = pthread_create(_currentThreadID, NULL, _target, param);
switch(returnValue)
{
case EBUSY:
throw ThreadException("Thread Creation Has Failed");
case EINVAL:
throw ThreadArgumentException("The Value Specified For The Argument Is Not Correct");
case EAGAIN:
throw ThreadException("Maximum Threads Creation Has Been Reached");
}
}
Please help.