1. 线程的状态转换
【说明】当线程调用pthread_cond_wait进入“等待Blocked”状态时,由于pthread_cond_wait内部会释放mutex同步锁,在这期间这个锁可能被其他线程所获得,因此线程还得等待mutex锁的释放而进入“锁定blocked”状态。
2. 线程限制
(1)查询线程限制:long sysconf (int name);
查询选项(name) |
限制 |
描述 |
_SC_THREADS |
_POSIX_THRERADS |
支持线程 |
_SC_THREAD_ATTR_STACKADDR |
_POSIX_THREAD_ATTR_STACKADDR |
支持线程栈地址属性 |
_SC_THREAD_ATTR_STACKSIZE |
_POSIX_THREAD_ATTR_STACKSIZE |
支持线程栈大小属性 |
_SC_THREAD_STACK_MIN |
PTHREAD_STACK_MIN |
线程栈最小大小(以字节为单位) |
_SC_TRHEAD_THREADS_MAX |
PTRHEAD_THREADS_MAX |
每个进程的最大线程数 |
_SC_THREAD_KEYS_MAX |
PTHREAD_KEYS_MAX |
每个进程关键字的最大数目 |
_SC_THREAD_PRIO_INHERIT |
_POSIX_TRHEAD_PRIO_INHERIT |
支持优先级继承选项 |
_SC_THREAD_PRIORITY_SCHEDULING |
_POSIX_THREAD_PRIORITY_SECHDULING |
支持线程优先级调度 |
_SC_THREAD_PROCESS_SHARED |
_POSIX_THREAD_PROCESS_SHARED |
支持进程共享同步 |
_SC_THREAD_SAFE_FUNCTION |
_POSIX_THREAD_SAFE_FUNCTION |
支持线程安全函数 |
_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 |
支持共享内存对象 |
(2)使用方法:
if(PTHREAD_STACK_MIN == syconf(_SC_THREAD_STACK_MIN)){ }