是应该在堆栈还是堆上分配pthread函数参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是应该在堆栈还是堆上分配pthread函数参数?相关的知识,希望对你有一定的参考价值。
我使用pthreads为生产者 - 消费者/有界缓冲区问题编写了一个“解决方案”,我使用72位结构来存储所有线程共享的数据和同步类型。这个结构在堆上分配,但是在堆栈上分配它并在pthread_create
中传递它的地址也可以。在没有使用pthread_detach
的情况下,有没有理由更喜欢堆分配而不是pthread参数的堆分配(反之亦然)?
编辑:
结构在main()
中声明,并且所有线程都保证在main()
完成之前完成。超出范围不是问题。
答案
这取决于堆栈分配的变量相对于正在运行的线程的生命周期。
如果保证线程在堆栈变量超出范围之前退出(即在所有等待的线程上调用pthread_join
),那么使用局部变量就可以了。如果在线程仍在运行时堆栈变量超出范围,则必须动态分配它们。
以上是关于是应该在堆栈还是堆上分配pthread函数参数?的主要内容,如果未能解决你的问题,请参考以下文章