我已经使用 pthreads 为生产者-消费者/有界缓冲区问题编写了一个“解决方案”,并且我使用 72 位结构来存储所有线程共享的数据和同步类型。该结构在堆上分配,但在堆栈上分配它并在 pthread_create
中传递它的地址也可以。在 不 使用 pthread_detach
的情况下,是否有任何理由更喜欢 pthread 参数的堆栈分配而不是堆分配(反之亦然)?
编辑:
该结构在 main()
中声明,所有线程都保证在 main()
完成之前完成。超出范围不是问题。
最佳答案
这取决于与正在运行的线程相关的堆栈分配变量的生命周期。
如果保证线程在堆栈变量超出范围之前退出(即您在所有等待线程上调用 pthread_join
),那么使用局部变量就可以了。如果线程仍在运行时堆栈变量超出范围,则您必须动态分配它们。
关于c - pthread 函数参数应该分配在栈上还是堆上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870952/