> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/pthread/pthread_attr.3.md).

# pthread\_attr.3

`pthread_attr_init` — 线程属性操作

## 名称

`pthread_attr_init`, `pthread_attr_destroy`, `pthread_attr_setstack`, `pthread_attr_getstack`, `pthread_attr_setstacksize`, `pthread_attr_getstacksize`, `pthread_attr_setguardsize`, `pthread_attr_getguardsize`, `pthread_attr_setstackaddr`, `pthread_attr_getstackaddr`, `pthread_attr_setdetachstate`, `pthread_attr_getdetachstate`, `pthread_attr_setinheritsched`, `pthread_attr_getinheritsched`, `pthread_attr_setschedparam`, `pthread_attr_getschedparam`, `pthread_attr_setschedpolicy`, `pthread_attr_getschedpolicy`, `pthread_attr_setscope`, `pthread_attr_getscope`

## 库

Lb libpthread

## 概要

`#include <pthread.h>`

`Ft int Fn pthread_attr_init pthread_attr_t *attr Ft int Fn pthread_attr_destroy pthread_attr_t *attr Ft int Fn pthread_attr_setstack pthread_attr_t *attr void *stackaddr size_t stacksize Ft int Fn pthread_attr_getstack const pthread_attr_t * restrict attr void ** restrict stackaddr size_t * restrict stacksize Ft int Fn pthread_attr_setstacksize pthread_attr_t *attr size_t stacksize Ft int Fn pthread_attr_getstacksize const pthread_attr_t *restrict attr size_t *restrict stacksize Ft int Fn pthread_attr_setguardsize pthread_attr_t *attr size_t guardsize Ft int Fn pthread_attr_getguardsize const pthread_attr_t * restrict attr size_t * restrict guardsize Ft int Fn pthread_attr_setstackaddr pthread_attr_t *attr void *stackaddr Ft int Fn pthread_attr_getstackaddr const pthread_attr_t *attr void **stackaddr Ft int Fn pthread_attr_setdetachstate pthread_attr_t *attr int detachstate Ft int Fn pthread_attr_getdetachstate const pthread_attr_t *attr int *detachstate Ft int Fn pthread_attr_setinheritsched pthread_attr_t *attr int inheritsched Ft int Fn pthread_attr_getinheritsched const pthread_attr_t *restrict attr int *restrct inheritsched Ft int Fn pthread_attr_setschedparam pthread_attr_t *attr const struct sched_param *param Ft int Fn pthread_attr_getschedparam const pthread_attr_t *attr struct sched_param *param Ft int Fn pthread_attr_setschedpolicy pthread_attr_t *attr int policy Ft int Fn pthread_attr_getschedpolicy const pthread_attr_t *restrict attr int *restrict policy Ft int Fn pthread_attr_setscope pthread_attr_t *attr int contentionscope Ft int Fn pthread_attr_getscope const pthread_attr_t *restrict attr int *restrict contentionscope`

## 描述

线程属性用于为 `Fn pthread_create` 指定参数。一个属性对象可以在多次调用 `Fn pthread_create` 时使用，调用之间可对其修改或不修改。

`Fn pthread_attr_init` 函数以所有默认线程属性初始化 `attr`。

`Fn pthread_attr_destroy` 函数销毁 `attr`。

`Fn pthread_attr_set*` 系列函数设置与各函数名对应的属性。

`Fn pthread_attr_get*` 系列函数将与各函数名对应的属性值复制到第二个函数参数所指向的位置。

## 返回值

若成功，这些函数返回 0。否则返回一个错误号以指示错误。

## 错误

`Fn pthread_attr_init` 函数在以下情况下会失败：

**\[Er** ENOMEM] 内存不足。

`Fn pthread_attr_destroy` 函数在以下情况下会失败：

**\[Er** EINVAL] `attr` 的值无效。

`Fn pthread_attr_setstacksize` 和 `Fn pthread_attr_setstack` 函数在以下情况下会失败：

**\[Er** EINVAL] `stacksize` 小于 `PTHREAD_STACK_MIN`。

`Fn pthread_attr_setdetachstate` 函数在以下情况下会失败：

**\[Er** EINVAL] `detachstate` 的值无效。

`Fn pthread_attr_setinheritsched` 函数在以下情况下会失败：

**\[Er** EINVAL] `attr` 的值无效。

`Fn pthread_attr_setschedparam` 函数在以下情况下会失败：

**\[Er** EINVAL] `attr` 的值无效。

**\[Er** ENOTSUP] `param` 的值无效。

`Fn pthread_attr_setschedpolicy` 函数在以下情况下会失败：

**\[Er** EINVAL] `attr` 的值无效。

**\[Er** ENOTSUP] `policy` 的值无效或不受支持。

`Fn pthread_attr_setscope` 函数在以下情况下会失败：

**\[Er** EINVAL] `attr` 的值无效。

**\[Er** ENOTSUP] `contentionscope` 的值无效或不受支持。

## 参见

[pthread\_attr\_affinity\_np(3)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man3/pthread_attr_affinity_np.3.md), [pthread\_attr\_get\_np(3)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man3/pthread_attr_get_np.3.md), [pthread\_create(3)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man3/pthread_create.3.md)

## 标准

`Fn pthread_attr_init`、`Fn pthread_attr_destroy`、`Fn pthread_attr_setstacksize`、`Fn pthread_attr_getstacksize`、`Fn pthread_attr_setstackaddr`、`Fn pthread_attr_getstackaddr`、`Fn pthread_attr_setdetachstate` 和 `Fn pthread_attr_getdetachstate` 函数遵循 ISO/IEC 9945-1:1996 ("POSIX.1") 标准。

`Fn pthread_attr_setinheritsched`、`Fn pthread_attr_getinheritsched`、`Fn pthread_attr_setschedparam`、`Fn pthread_attr_getschedparam`、`Fn pthread_attr_setschedpolicy`、`Fn pthread_attr_getschedpolicy`、`Fn pthread_attr_setscope` 和 `Fn pthread_attr_getscope` 函数遵循 -susv2 标准。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/pthread/pthread_attr.3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
