c++ - 为什么 std::thread 缺少基本功能?

标签 c++ multithreading std api-design stdthread

<分区>

std::thread中:

  • 线程创建时没有堆栈大小。
  • 没有线程优先级。

为什么?这样的API有什么用?

这是线程概念的基础。

堆栈大小,为什么我们不关心内存?也许作者假设只有 Linux 和 Windows 具有分页内存和 64 位地址空间,但是没有分页内存的平台呢?

优先级,如何在没有优先级的情况下使任何系统具有可预测的时序?

最佳答案

因为每个 平台都必须提供 API。您仍然可以拥有针对没有线程的平台的 C++ 实现。

因为“堆栈”是一个实现细节。增加不一定存在的东西的大小是什么意思?

没有优先级时更改优先级是什么意思?

C++ 以抽象机为目标。一个实现将该抽象机器映射到目标机器(它可能本身是抽象的)。该标准非常努力地不限制它不需要的领域的实现。

std::thread 提供的是一个(完全由实现定义)native_handle .这完全授权您以实现定义的方式执行实现定义的事情。

关于c++ - 为什么 std::thread 缺少基本功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51784212/

相关文章:

c++ - 使用 boost 的 boost::asio::read 直接写入 cout

c++ - 确定二进制文件的大小

c++ - 为什么 C++ 线程是可移动的而不是可复制的?

c++ - 在 C++ 中创建 vector 的 shared_ptr

c++ - 用于 OpenSceneGraph 的迷你 map /画中画

c++ - 用数据点填充矩阵

c++ - 如何在线程中使用 while true?

c++ - 读取成员时线程段错误

c++ - 使用值对 std::map 进行排序

c++ - 重新定义 < 运算符以在字符串的 STL 算法中使用