瞭解系統的線程資源限制是使得應用程式恰當地管理它們的關鍵。前面已經討論了利用系統資源的樣本。當設定線程的棧大小時,最小值為PTHREAD_MIN_STACK。棧大小不應當低於由pthread_attr_getstacksize( )返回的預設棧大小的最小值。每個進程的最大線程數決定了能夠為每個進程建立的worker線程的上限。函數sysconf( )用於返回可配置系統限制或選項的當前值。系統中定義了同線程、進程和訊號量相關的多個變數和常量。在表6-8中,列出了部分變數和常量。
變 量 |
名字值(Name Value) |
描 述 |
_SC_THREADS |
_POSIX_THREADS |
支援線程 |
_SC_THREAD_ATTR_STACKADDR |
_POSIX_THREAD_ATTR_STACKADDR |
支援線程棧地址屬性 |
_SC_THREAD_ATTR_STACKSIZE |
_POSIX_THREAD_ATTR_STACKSIZE |
支援線程棧大小屬性 |
_SC_THREAD_STACK_MIN |
PTHREAD_STACK_MIN |
線程棧儲存區的最小大小,以位元組為單位 |
_SC_THREAD_THREADS_MAX |
PTHREAD_THREADS_MAX |
每個進程的最大線程數 |
_SC_THREAD_KEYS_MAX |
PTHREAD_KEYS_MAX |
每個進程關鍵字的最大數目 |
_SC_THREAD_PRIO_INHERIT |
_POSIX_THREAD_PRIO_INHERIT |
支援優先順序繼承選項 |
_SC_THREAD_PRIO |
_POSIX_THREAD_PRIO_ |
支援線程優先順序選項 |
_SC_THREAD_PRIORITY_SCHEDULING |
_POSIX_THREAD_PRIORITY_SCHEDULING |
支援線程優先順序調度選項 |
_SC_THREAD_PROCESS_SHARED |
_POSIX_THREAD_PROCESS_SHARED |
支援進程共用同步 |
_SC_THREAD_SAFE_FUNCTIONS |
_POSIX_THREAD_SAFE_FUNCTIONS |
支援安全執行緒函數 |
_SC_THREAD_DESTRUCTOR_ITERATIONS |
_PTHREAD_THREAD_DESTRUCTOR_ITERATIONS |
決定線上程退出時嘗試銷毀線程特定資料的嘗試次數 |
_SC_CHILD_MAX |
CHILD_MAX |
每個UID允許的最大進程數目 |
_SC_PRIORITY_SCHEDULING |
_POSIX_PRIORITY_SCHEDULING |
支援進程調度 |
_SC_REALTIME_SIGNALS |
_POSIX_REALTIME_SIGNALS |
支援即時訊號 |
_SC_XOPEN_REALTIME_THREADS |
_XOPEN_REALTIME_THREADS |
支援X/Open POSIX即時線程特性組 |
_SC_STREAM_MAX |
STREAM_MAX |
決定進程能夠開啟的流的數目 |
_SC_SEMAPHORES |
_POSIX_SEMAPHORES |
支援訊號量 |
_SC_SEM_NSEMS_MAX |
SEM_NSEMS_MAX |
決定線程能夠擁有的訊號量的最大數目 |
_SC_SEM_VALUE_MAX |
SEM_VALUE_MAX |
決定訊號量的最大值 |
_SC_SHARED_MEMORY_OBJECTS |
_POSIX_SHARED_MEMORY_OBJECTS |
支援共用記憶體對象 |
下面是調用sysconf( )的樣本:
- if(PTHREAD_STACK_MIN == (sysconf(_SC_THREAD_STACK_MIN))){
- //...
- }
參考網址:
http://deepfuture.javaeye.com/category/120753?page=4&show_full=true