c++ - 为什么 std::thread 缺少基本功能?
问题描述
在std::thread
:
- 线程创建时没有堆栈大小。
- 没有线程优先级。
为什么?这样的API有什么用?
它是线程概念的基础。
堆栈大小,为什么我们不关心内存?也许作者假设只有 Linux 和 Windows 具有分页内存和 64 位地址空间,但是没有分页内存的平台呢?
优先级,如何使任何系统在没有优先级的情况下具有可预测的时序?
解决方案
因为每个平台都必须提供 API。您仍然可以拥有针对没有线程的平台的 C++ 实现。
因为“堆栈”是一个实现细节。增加不一定存在的东西的大小是什么意思?
当没有优先级时更改优先级是什么意思?
C++ 以抽象机器为目标。实现将抽象机器映射到目标机器(它本身可能是抽象的)。该标准非常努力地不限制它不需要的领域的实施。
std::thread
提供的是一个(极端实现定义)native_handle
。这完全授权您以实现定义的方式执行实现定义的事情。
推荐阅读
- rust - 如何确定 Rust 迭代器的结果类型?
- vba - 使用 VBA 重新编号 Word 中的手动数字列表
- github - 为什么图像在我的 GitHub wiki 上看起来调整了大小?
- javascript - 如何让一个玩家的回应显示在其他玩家的屏幕上
- typescript - 找不到视觉上正确的占位符 xdocreports ODT 到 PDF 生成
- c++-cli - 未实际使用该函数时未解析的外部符号
- javascript - TypeScript 类型“对象”与对象接口,为什么没有“数组”类型?
- php - 这是 PHP 中的简写吗?
- javascript - 对象的克隆数组删除类类型
- c++ - 想从 C++ 程序中运行 PowerShell 代码