typedef struct
{
int __detachstate; 线程的分离状态
int __schedpolicy; 线程调度策略
struct sched_param __schedparam; 线程的调度参数
int __inheritsched; 线程的继承性
int
size_t
int
void * __stackaddr; 线程堆栈的位置
size_t
}pthread_attr_t;
我在/usr/include/bits/
{
char __size[__SIZEOF_PTHREAD_ATTR_
long int __align;
} pthread_attr_t;
之所以出现和两种不同的定义可能是因为pthread不想让用户空间看到它内部对pthread_attr_t的实现,因为API设计时就封装了这个类型。所以它只要提供和内部实现的pthread_attr_t大小一样的类型就可以了。
实际上,pthread内部对pthread_attr_t的实现是
struct pthread_attr,它的内容和书上的内容基本上是一致的。同时在机子上测试可以看到这两个结构体的大小是相等的。