线程属性
属性结构
union pthread_attr_t{
char __size[__SIZEOF_PTHREAD_ATTR_T];
long int __align;
};
属性值不能直接设置,必须使用相关函数进行操作,线程属性主要包括:是否绑定,是否分离,堆栈地址,堆栈大小,优先级
初始化函数
函数原型
/* Initialize thread attribute *ATTR with default attributes
(detachstate is PTHREAD_JOINABLE, scheduling policy is SCHED_OTHER,
no user-provided stack). */
extern int pthread_attr_init (pthread_attr_t *__attr) __THROW __nonnull ((1));
注
:该函数必须在pthread_create()
之前调用
默认:非绑定,非分离,默认1M的堆栈,与父进程同样级别的优先级
关于绑定
轻进程(内核进程)
位于系统层与用户层之间,系统对线程的分配、控制都是通过轻进程来实现的,一个轻进程可以控制一个或者多个线程
非绑定
:默认情况下启动的轻进程以及它所控制的线程都是由系统决定的,所以这就是属于非绑定的
绑定
:把某个线程指定到某个轻进程上面(被绑定的线程具有较高的响应速度)
分离属性
非分离
:原有的线程等待创建的线程结束,只有当pthread_join()
收到返回值时,创建的线程才算终止,才能释放空间
分离
:线程函数执行完以后马上释放空间
绑定函数
/* Return in *SCOPE the scheduling contention scope of *ATTR. */
extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
int *__restrict __scope)