2014-12-06 71 views
-2

當我設置堆棧大小使用像這樣的setstack大小。在pthread中使用setstacksize函數設置堆棧大小的限制是什麼?

ret=pthread_attr_setstacksize(&attr,1000); 
    printf("%d\n",ret); 
    pthread_attr_getstacksize(&attr,&size); 

setstacksize返回非零值,表示大小尚未設置。 而getstacksize正在打印垃圾值。 但如果我給大小比16384更大的堆棧設置並返回0 和getstacksize返回16384

有人可以告訴我爲什麼setstacksize如果考慮規模超過16384時,有沒有設置任何限制堆棧大小?

回答

1

the manual 「可能的錯誤」:

EINVAL:堆棧大小小於PTHREAD_STACK_MIN(16384)字節。

在某些系統上,如果stacksize不是系統頁面大小的倍數,則pthread_attr_setstacksize()可能會失敗,並顯示錯誤EINVAL