首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

为什么线程退出后空间不释放,该怎么解决

2012-02-16 
为什么线程退出后空间不释放开1个线程大概增加8m VSZ空间,关闭后基本不释放开2个大概16m若退出再开,仍然不

为什么线程退出后空间不释放
开1个线程大概增加8m VSZ空间,关闭后基本不释放
开2个大概16m

若退出再开,仍然不会增加, 除非增加到3个线程同时开

C/C++ code
pthread_attr_t attr;pthread_attr_init(&attr);pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);pthread_attr_setstacksize(&attr, 2 * 1024 * 1024); //default:8mif( pthread_create( &thread_id/*pClient->m_ClientThreadID*/, &pServer->m_pattrClient,                    pClient->Shell, pClient ) != 0 ) 


线程
Shell()
{
...
pthread_detach (pthread_self());
return NULL;
}

[解决办法]
我觉得由于线程是共享地址空间的,线程结束之后保留地址空间方便其他新建的线程使用,如果消除之后其他新的线程就得重新开辟地址空间,初始化一些和内存有关的数据结构,这样会导致线程的效率下降,和进程差别不大了。
[解决办法]
pthread_attr_t attr



if( pthread_create( &thread_id/*pClient->m_ClientThreadID*/, &pServer->m_pattrClient,
pClient->Shell, pClient ) != 0 ) 

你没有attr啊,你用的m_pattrclient。

线程
Shell()
{
...
pthread_detach (pthread_self());
return NULL;
}

不是设置了detach了么,怎么又主动调一次

热点排行