我的一位朋友正在尝试修复一个用C++编写的自定义http服务器,用于在Linux中工作。我试图帮助他,但我发现的一切似乎都很明显。Linux C++线程已死,但“挂起” - 线程限制
该应用程序为每次请求进入时创建一个线程。该线程为请求提供服务并结束。经过一些请求(超过300个)后,不再创建新的线程。
我发现的所有内容都是可以创建的线程的限制。但看起来完成的线程仍然存在。这是代码的问题还是线程处理程序永远不会被释放?
这是一段代码我的朋友从应用程序中提取:
pthread_t threadID;
StartingArgs *arg = new StartingArgs(&(this->cameraCounts), mapToSend,&(this->mapMutex), &(this->mutex), this->config);
if(pthread_create(&threadID, NULL, (this->startingRoutine) , (void*)arg) != 0)
{
ConsoleMessages::printDate();
cout<< "snapshot maker: new thread creation failed\n";
}
void *CameraCounter::startingRoutine(void *arg)
{
//stuff to do. removed for debugging
delete realArgs;
return NULL;
}
2010-10-22
naugtur