为什么使用 std::thread::hardware_concurrency() 和 boost::thread::hardware_concurrency() 会有区别?

2023-12-22

问题本身的描述非常简单。我正在测试 C++11 中 std::thread 库和 boost::thread 库的差异。

这些的输出:

#include <iostream>
#include <thread>
#include <boost/thread.hpp>

int main() {
  std::cout << std::thread::hardware_concurrency() << std::endl;
  std::cout << boost::thread::hardware_concurrency() << std::endl;
  return 0;
}

给了我不同的结果:

0
4

这是为什么?

PS:gcc包的版本是4.6.2-1.fc16(x86_64)。我在用着

g++ test.cc -Wall -std=c++0x -lboost_thread-mt -lpthread

查看 /usr/include/c++/4.6.2/thread 后

可以看到,实现实际上是:

// Returns a value that hints at the number of hardware thread contexts.
static unsigned int
hardware_concurrency()
{ return 0; }

所以问题解决了。这只是 gcc 4.6.2 中尚未实现的另一个功能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 std::thread::hardware_concurrency() 和 boost::thread::hardware_concurrency() 会有区别? 的相关文章

  • Boost MPL 生成对象序列化代码?

    我想生成序列化 反序列化代码 class Object string a int b long c char d 通过查看 mpl 序列 但我需要能够识别对象并将其检索回来 我不知道如何获取它的成员的名称 我必须知道吗 代码应该看起来像 v
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • 如何在 Linux 中创建可通过 Screen 应用程序连接的 pty

    我想创建 C C 应用程序 它在 dev xxx 中创建新的 虚拟 设备 并且能够与 屏幕 应用程序连接 例如 循环运行的程序会创建新的 dev ttyABC 然后我将使用 屏幕 dev ttyABC 当我向那里发送一些字符时 应用程序将其
  • 处理两个传入的数据流并将它们组合在 python 中?

    我一直在研究Python中线程 多处理异步等的各种选项 作为处理两个传入流并将它们组合起来的方法 有关的信息很多 但示例往往令人费解且复杂 更常见的是将单个任务拆分为多个线程或进程 以加快任务的最终结果 我有一个通过套接字传入的数据流 当前
  • RTNETLINK回答:没有这样的文件或目录错误

    1 ETH 1 2 LATENCY 2 3 LOSS 3 4 JITTER 4 5 BW 5 6 sudo sbin tc qdisc del dev eth0 root 7 sudo sbin tc qdisc add dev eth0
  • Delphi线程死锁

    我有时会在销毁某些线程时遇到死锁问题 我尝试过调试该问题 但在 IDE 中调试时似乎从未存在死锁 可能是因为 IDE 中的事件速度较低 问题 当应用程序启动时 主线程会创建多个线程 线程始终处于活动状态并与主线程同步 完全没有问题 当应用程
  • DispatchWorkItem 未通知主线程

    注意 这不是我已经见过的重复问题调度组 无法通知主线程 https stackoverflow com questions 38552180 dispatch group cannot notify to main thread 没有任何关
  • Linux CFS 调度程序代码在哪里?

    我有3 13版本的完整linux源代码 我试图找到 CFS 调度程序的源代码 根据流行书籍 它应该驻留在 kernel sched c 中作为基本调度程序代码 而 kernel sched fair c 专门针对 CFS 代码 我刚刚在 3
  • C# 中方法的时间限制

    我有一个游戏框架 其中有一个实现 IBotInterface 的机器人列表 这些机器人是由用户定制的 唯一的限制是它们必须实现接口 然后游戏会调用机器人中的方法 希望是并行的 来处理各种事件 例如 yourTurn 和 roundStart
  • 使用 std::unique_ptr 管理 COM 对象

    我正在尝试使用智能指针来保存我的类中的 COM 对象 同时避免使用 ComPtr 是否可以使用 unique ptr 来达到此目的 我对智能指针很陌生 到目前为止我有点困惑 请考虑以下简化代码 class Texture private s
  • constexpr 数组在有下标时是否一定要使用 odr ?

    给出以下代码 struct A static constexpr int a 3 1 2 3 int main int a A a 0 int b A a 1 is A a一定odr used https stackoverflow com
  • 在内核中创建一个简单的只写过程条目

    include
  • Memcached的get和put方法是线程安全的吗

    多线程环境下memcached中的key是否有可能出现乱码 如果是这样 如何以最短的同步时间避免它 使用Java客户端访问memcached服务器 不会 Memcache 将返回某人之前写入的值 而不是乱码 如果您获取 修改 放置 则无法保
  • `enable_shared_from_this` 有什么用处?

    我跑过enable shared from this在阅读 Boost Asio 示例和阅读文档后 我仍然不知道如何正确使用它 有人可以给我一个例子并解释一下何时使用这个类是有意义的 它使您能够获得有效的shared ptr实例到this
  • Boost 安装在我的 Ubuntu 上的什么位置?

    我从 Boost 网站下载 Boost 1 54 tar 然后按照此处 1 详细说明进行操作 特别是 我想将我的 boost 库安装在文件夹中 HOME BOOST 使用这个 bootstrap sh prefix HOME BOOST 但
  • 从 Java 内部限制 CPU

    我在这个 和其他 论坛中看到了许多具有相同标题的问题 但似乎没有一个问题能完全解决我的问题 就是这个 我有一个 JVM 它占用了托管它的机器上的所有 CPU 我想限制它 但是我不能依赖任何限制工具 技术external到 Java 因为我无
  • 我究竟做错了什么? (多线程)

    简而言之 这就是我正在做的事情 在我班级的 cpp 文件中 我有 std vector
  • 如何在 iPhone 应用程序中运行进程而不阻塞用户界面

    我正在 iPhone 上访问照片库 需要很长时间才能导入我在应用程序中选择的图片 如何在辅助线程上运行该进程 或者我应该使用什么解决方案来不阻塞用户界面 我在这里使用 PerformSelectOnBackground 或 GCD 对示例代
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • 如何在 Ubuntu x64 中使用 ptrace 插入 int3?

    我正在努力追随本指南 http eli thegreenplace net 2011 01 27 how debuggers work part 2 breakpoints 通过设置断点达到相同的结果 唯一的区别是我在 x64 系统上 所以

随机推荐