建立執行緒和配置屬性 釋放

2021-08-02 19:59:07 字數 1296 閱讀 5351

pthread_create 建立執行緒時,若不指定分配堆疊大小,系統會分配預設值,檢視預設值方法如下:

# ulimit -s

8192#

上述表示為8m;單位為kb。

也可以通過# ulimit -a 其中 stack size 項也表示堆疊大小。ulimit -s  value 用來重新設定stack 大小。

一般來說 預設堆疊大小為 8388608; 堆疊最小為 16384 。 單位為位元組。

堆疊最小值定義為 pthread_stack_min ,包含#include 後可以通過列印其值檢視。對於預設值可以通過pthread_attr_getstacksize (&attr, &stack_size); 列印stack_size來檢視。

尤其在嵌入式中記憶體不是很大,若採用預設值的話,會導致出現問題,若記憶體不足,則 pthread_create 會返回 12,定義如下:

#define eagain 11

#define enomem 12 /* out of memory */

上面了解了堆疊大小,下面就來了解如何使用 pthread_attr_setstacksize 重新設定堆疊大小。先看下它的原型:

#include

int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);

attr 是執行緒屬性變數;stacksize 則是設定的堆疊大小。 返回值0,-1分別表示成功與失敗。

這裡是使用方法

pthread_t thread_id;

int ret ,stacksize = 20480; /*thread 堆疊設定為20k,stacksize以位元組為單位。*/

pthread_attr_t attr;

ret = pthread_attr_init(&attr); /*初始化執行緒屬性*/

if (ret != 0)

return -1;

ret = pthread_attr_setstacksize(&attr, stacksize);

if(ret != 0)

return -1;

ret = pthread_create (&thread_id, &attr, &func, null);

if(ret != 0)

return -1;

ret = pthread_attr_destroy(&attr); /*不再使用執行緒屬性,將其銷毀*/

if(ret != 0)

return -1;

Linux建立執行緒的屬性設定

如果執行緒呼叫函式 sleep 函式,就是掛起自己,執行緒掛起,此時cpu的時間片就會分配給其他程序。而如果當前執行緒自己輪詢操作,就會一直使用系統分配給自己的時間片。對於乙個系統而言 系統會分配給執行緒時間片,同時系統執行排程程式也會花費時間,稱為排程時間。建立執行緒時的屬性設定 1.執行緒的排程...

空間的配置和釋放 std alloc

看完了物件的構造行為和記憶體釋放前的物件的析構行為,我們現在來看看記憶體的配置和釋放。物件構造前的空間分配和析構後的空間釋放,定義在標頭檔案中。其設計思想是 c 的記憶體配置基本操作時 operator new 記憶體釋放的基本操作是 operator delete 這是兩個全域性函式相當於c的ma...

Qt開發 釋放執行緒中建立的QUdpSocket物件

在做symbian應用開發和meego應用開發時q框架是乙個統一的開發框架,很多時候需要在qthread的run中new乙個qudpsocket來收發資料.這時,這個socket物件的釋放就成了乙個麻煩的問題.51cto編者按 在做symbian應用開發和meego應用開發時q框架是乙個統一的開發框...