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

标签 c pthreads heap-memory stack-memory

我已经使用 pthreads 为生产者-消费者/有界缓冲区问题编写了一个“解决方案”,并且我使用 72 位结构来存储所有线程共享的数据和同步类型。该结构在堆上分配,但在堆栈上分配它并在 pthread_create 中传递它的地址也可以。在 使用 pthread_detach 的情况下,是否有任何理由更喜欢 pthread 参数的堆栈分配而不是堆分配(反之亦然)?

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

最佳答案

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

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

关于c - pthread 函数参数应该分配在栈上还是堆上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55870952/

相关文章:

c - 在另一个 'string' 中搜索子 'string'

c - PROT_READ 和 PROT_WRITE 与 mprotect 的行为

c - 段错误 11,寻找标志作为输入 - C

c - 在 Netbeans 中在哪里设置 GCC 库依赖项?

c++ - 在网络游戏中正确发送/接收数据的方法(UDP,但为什么不是 TCP)

c++ - Object Mat(args); 之间的区别 - 内存分配明智 -和 Object *Mat = new Mat(args);在 C++ 中?

heap-memory - !heap –s 显示 “Lock contention”

c - 类次和类次分配给出不同的结果

c - 为什么使用线程的程序会花费更多的时间?

cmd - 从命令行获取 Java VisualVM 数据