c - 我可以连续重用 pthread_t 和 pthread_attr_t 用于已执行线程的新不同线程吗?
问题描述
我想在不使用 pthread_join 的情况下连续执行 2 个不同的线程,可以吗?还是我真的必须像这样声明新的thread_t:
pthread_create(&th,&thread_attr,shtdwn,(void*)&lpBuffer);
pthread_create(&th,&thread_attr,Run,(void*)&args);
而且我不需要等待任何一个线程完成。非常感谢您的帮助,谢谢!
解决方案
pthread_t
和变量都pthread_attr_t
可以在每次pthread_create
调用中重复使用。事实上,pthread_attr_t
像这样重复使用的情况很常见。但是,重用pthread_t
变量有点不寻常,因为该值通常被存储以用于pthread
线程上的后续操作(例如pthread_join
)。
此外,pthread_attr_t
可以为 NULL,在这种情况下将使用默认属性。但是,pthread_t
参数不能为 NULL。从pthread_create 手册:
attr 参数指向一个 pthread_attr_t 结构,其内容在线程创建时用于确定新线程的属性;这个结构是使用 pthread_attr_init(3) 和相关函数初始化的。如果 attr 为 NULL,则使用默认属性创建线程。
在返回之前,成功调用 pthread_create() 会将新线程的 ID 存储在 thread 指向的缓冲区中;
推荐阅读
- python - 基于条件的Openpyxl填充单元不起作用
- javascript - execPopulate() 的用法
- polygon - 具有多数据的 Paraview
- javascript - 基于数字出现的数组返回元素
- linux - cat 标准输出和文件中字节的差异
- java - 当不在 WebContext 而不是 OidcConfiguration 中时 Pac4J OIDCConfigurationContact 范围总是“openid profile email”有什么原因吗
- c++ - 我可以在不是从 QObject 派生的类中使用 Q_PROPERTY 或 Q_INVOKE 吗?
- reactjs - 如何使用扩展运算符复制嵌套对象属性
- javascript - 生产中的 i18n 导致尝试键入输入时超出最大深度
- javascript - 如何在Javascript中将数组中的真实值相加?