pthread 函数参数应该分配在栈上还是堆上?

Should pthread function arguments be allocated on the stack or the heap?

我已经使用 pthreads 为 producer-consumer/bounded-buffer 问题编写了 "solution",并且我使用 72 位结构来存储所有线程共享的数据和同步类型。这个结构是在堆上分配的,但是在堆栈上分配它并在 pthread_create 中传递它的地址也可以。在 pthread_detach 未使用 的情况下,是否有任何理由更喜欢 pthread 参数的堆栈分配而不是堆分配(反之亦然)?

编辑:
该结构在 main() 内声明,所有线程都保证在 main() 完成之前完成。超出范围不是问题。

这取决于与 运行 线程相关的堆栈分配变量的生命周期。

如果保证线程在堆栈变量超出范围之前退出(即您在所有等待线程上调用 pthread_join),那么使用局部变量就可以了。如果线程仍在 运行 时堆栈变量超出范围,那么您将不得不动态分配它们。