簡體   English   中英

在pthreads中指定線程堆棧大小

[英]Specifying thread stack size in pthreads

我想增加通過pthread_create()創建的線程的堆棧大小。 走的路似乎是

int pthread_attr_setstack( pthread_attr_t *attr,
                           void *stackaddr,
                           size_t stacksize ); 

來自pthread.h

但是,根據多個在線參考資料

stackaddr應該適當對齊以用作堆棧; 例如,如果(stackaddr&0x7)不為0,則pthread_attr_setstack()可能會失敗,並顯示[EINVAL]。

我的問題:有人可以提供如何進行對齊的示例嗎? 它(對齊)平台或實現相關嗎?

提前致謝

切勿使用pthread_attr_setstack 它有很多致命缺陷,其中最嚴重的是,它是不可能永遠免費或線程已經用它創建之后再使用堆棧。 (POSIX明確指出,任何嘗試這樣做都會導致未定義的行為。)

POSIX提供了更好的函數pthread_attr_setstacksize ,該函數允許您請求所需的堆棧大小,但使實現負責分配和取消分配堆棧。

查看posix_memalign()

它將分配所請求的對齊方式和大小的存儲塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM