c++ - 线程应该分配给堆栈还是堆?
问题描述
我正在尝试使用 std::thread 库在 C++ 中学习多线程。我找不到是否应该在堆栈或堆上声明线程;我尝试用谷歌搜索和搜索这个网站,但无法得到关于使用这两者中的哪一个以及为什么使用的具体答案。
有人可以向我解释分配线程的最佳用途吗?
解决方案
如果您在编译时知道所需的对象数量(std::thread
在本例中为 s),那么使用自动变量(多个对象的数组)通常是一个很好的默认选择。自动对象在堆栈上分配。
这个经验法则的一个例外是对象相对于堆栈的大小非常大的情况。大对象需要动态分配。我的系统上的大小std::thread
是 8 个字节。需要动态分配的对象的确切大小在很大程度上取决于情景,但在绝大多数情况下,8 个字节足够小(有很大的余量)可以存储在堆栈上。
但是,如果您在编译时不知道需要多少对象,那么您将需要求助于动态分配。通常通过使用标准容器(std::vector<std::thread>
例如)。
推荐阅读
- r - 在R中按年份计算偏斜和峰度
- python - Python Setuptools 和 PBR - 如何使用 git 标签作为版本创建包发布?
- java - 搜索后导航栏没有进入最后一个位置
- python - pi 不会从 MCP3424 读取值
- react-native - 如何使用 React Native 获取实时数据
- excel - 将行追加到 CSV 文件 (VBA)
- sql-server - 将来自多个不同 RDBMS 系统的数据整合到可查询数据库中的最直接方法
- mongodb - 寻求建议以创建我的第一个神经网络来对文本进行分类
- python - Kivy 中的状态处理
- r - 从实验结果中回归或去除年龄作为混杂因素