应该将线程分配给堆栈还是堆?
Should a Thread be allocated to the stack or heap?
我正在尝试使用 std::thread 库在C++中学习多线程。 我找不到是否应该在堆栈或堆上声明线程; 我尝试使用谷歌搜索并搜索该网站,但无法获得有关使用两者中的哪一个以及为什么使用的具体答案。
有人可以向我解释分配线程的最佳用途是什么吗?
如果您在编译时知道所需的对象数量(在本例中为std::thread
s(,那么使用自动变量(多个对象的数组(通常是一个不错的默认选择。自动对象在堆栈上分配。
此经验法则的一个例外是对象相对于堆栈的大小非常大的情况。大型对象需要动态分配。我的系统上std::thread
的大小是 8 字节。需要动态分配的对象的确切大小是高度情境化的,但对于绝大多数情况,8 字节足够小(以很大的幅度(存储在堆栈上。
但是,如果在编译时不知道需要多少对象,则需要诉诸动态分配。通常使用标准容器(例如std::vector<std::thread>
(。
相关文章:
- C++线程的可用堆栈大小
- 应该将线程分配给堆栈还是堆?
- 其他线程堆栈上的可用内存无效
- 访问其他线程堆栈变量如何在C++中工作?
- 为什么RCOUT和RPRINTF在多线程时会导致堆栈限制错误
- 如何获取 systemc 线程的堆栈大小
- 线程安全堆栈实现
- C 线程堆栈地址范围
- 如何使用pthreads在Solaris上增加C 线程堆栈的大小
- 线程的单独堆栈空间的重要性
- 如何使用 Win32 API 获取任何线程的堆栈大小和堆栈限制
- 将信号从Anthoter非过程中发送到线程,并没有发生记录堆栈
- 多线程时,您该怎么做才能停止堆栈空间
- 分叉式堆栈复制线程C++
- 繁忙时线程安全堆栈互斥被破坏
- 线程的调用堆栈中充满了相同的函数调用--curl_inet_ntop()
- 非阻塞线程安全堆栈
- 检测 Linux 上多线程C++应用程序中的堆栈溢出/覆盖
- 堆栈上的线程返回地址是什么
- 静态变量与堆栈变量:线程安全与堆栈大小