先看一个例子:pthread1.c
struct pthread_attr_t
{
enum 新线程是否与进程中其它线程脱离同步
{
PTHREAD_CREATE_JOINABLE [default] 可以在创建后用 pthread_detach 脱离同步
PTHREAD_CREATE_DETACHED 不能用 pthread_join 来同步,退出时自行释放资源
} __detachstate;
enum 新线程的调用策略
{
SCHED_OTHER [default] 非实时
SCHED_RR 实时,轮转法 - 仅对超级用户有效
SCHED_FIFO 实时,先入先出 - 仅对超级用户有效
} __schedpolicy;
struct sched_param 在运行时用 pthread_setschedparam 更新。
{
int sched_priority 线程的运行优先级。当上面的 __schedpolicy 为“实时”时才有效。缺省是零。
} __schedparam;
enum
{
PTHREAD_EXPLICIT_SCHED [default] 显式指定调度策略和调度参数,即使用 attr 中的值
PTHREAD_INHERIT_SCHED 继承调用者线程的值
} __inheritsched;
enum 线程间竞争CPU的范围
{
PTHREAD_SCOPE_SYSTEM [default] 目前Linux只实现了这一种
PTHREAD_SCOPE_PROCESS 仅与同进程的线程竞争
} __scope;
}
下面三个没用过
* guard size
* stack address (See unistd.h and bits/posix_opt.h _POSIX_THREAD_ATTR_STACKADDR)
* stack size (default minimum PTHREAD_STACK_SIZE set in pthread.h)
检查本线程是否处于取消状态,若是,立刻退出。