gpt4 book ai didi

c - 当 pthread_attr_t 不为 NULL 时?

转载 作者:太空狗 更新时间:2023-10-29 16:00:54 25 4
gpt4 key购买 nike

除了 pthread_attr_t 之外,POSIX 线程的 pthread_create 的所有参数都非常容易理解。 pthread_attr_t 的用途、方式和时间不应由 NULL 初始化是什么?

我浏览了 Linux man page .我找到的关于 pthread_attr_t 的描述是:

  • 语法:

    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void*),void *arg);
  • 解释:

    The attr argument points to a pthread_attr_t structure whose contents
    are used at thread creation time to determine attributes for the new
    thread; this structure is initialized using pthread_attr_init(3) and
    related functions. If attr is NULL, then the thread is created with
    default attributes.

这是非常不清楚的。我也在整个互联网上用谷歌搜索,也没有在任何地方找到明确的解释。那么,当 pthread_attr_t 不是 NULL 时?

有人可以解释一下吗?非常感谢所有评论和反馈。

最佳答案

您可以使用它来创建一个分离的(不可连接的)线程,或者将线程的堆栈大小设置为非默认值,以及其他属性。

请参阅 POSIX 规范:

(每个 URL 有两个函数——pthread_attr_destroy() 和类似于“set”函数的“get”。)

大多数情况下,您不需要修改这些。将 NULL 指针传递给 pthread_create() 等同于使用一组默认属性 — 这是 pthread_attr_init() 为您创建的。您可以通过函数在 pthread_attr_t 对象中更改您希望更改的属性,然后将修改后的对象传递给 pthread_create()

Another thing that there is no apparent justification either, is the first argument from pthread_create on pthread_t data type definition.

所有 POSIX 线程类型都是不透明的——这是 POSIX 委员会深思熟虑的设计决定。你不能在可移植的类型中四处闲逛。这使得实现起来更容易——你只能做函数允许你做的事情。最终,它也简化了程序员(用户)的生活;您不会被骗去使用不会迁移到其他系统的 POSIX 实现的内部知识。

关于c - 当 pthread_attr_t 不为 NULL 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com