1. 程式人生 > >AIX5.3下pthread執行緒棧大小

AIX5.3下pthread執行緒棧大小

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;
}