AIX5.3下pthread執行緒棧大小
阿新 • • 發佈:2019-02-01
32位系統預設只有96KB,64位僅有192KB!而32位Linux下是10MB。
一段測試程式碼:
//執行緒函式
void TAA::run(void* lp)
{
pthread_attr_t tattr;
pthread_attr_init(&tattr);
size_t size=0;
pthread_attr_getstacksize(&tattr, &size);
char ab[8*1024]; //如果大小為100KB,則可能發生段錯誤
cout<<"OK asdf: "<<size<<endl;
}
int main()
{
pthread_attr_t tattr;
pthread_attr_init(&tattr);
size_t size=0;
pthread_attr_getstacksize(&tattr, &size);
char ab[800*1024]; //主執行緒中獲得的棧大小也是96KB,但實際上棧大小是受ulimit 引數控制的,所以可以使用大的資料塊。
cout<<"OK: "<<PTHREAD_STACK_MIN<<" " <<size<<endl;
TAA aa;
aa.Start();
Thread::msleep(5000);
return 0;
}