我怎样才能获得物理ID和在其上并行线程正在运行的当前处理器的核心ID?如何获取一个并行线程的物理ID用C
3
A
回答
2
总的来说,你不能以有意义的方式做到这一点。调度人员可能会在中途通过询问问题并在不同的处理器上恢复,从而使您得到先机。
2
没有可移植的方法。如果你使用GNU/Linux,你可以尝试功能sched_getcpu
。
1
我不认为,因为线程没有运行由单一的处理器,而是由一个时间表,这曾经处理器被释放在那个时候将采取一定的时间的工作,然后保存数据,然后又是可能的处理器可能会采取这项工作
+0
但不会操作系统尽量确保有核心相似充其量也就是尽可能尝试运行之前运行相同的核心线程,使其不必清除与该线程相关联的TLB等?否则会有很多TLB未命中?至少在Linux中,线程或多或少被视为一个进程。 –
+1
@David和堆栈器只是指出返回的结果是陈旧的,可能不再有效。操作系统调度程序会做出任何优化,但是,如果用户点击浏览器链接并在“什么核心”调用期间将一系列准备就绪的线程转储到系统中,那么线程TLB缓存的内容将会很快消失它会再次运行,并可以在任何核心上弹出。 –
相关问题
- 1. C++线程 - 并行处理
- 2. 如何获取C++程序的线程ID?
- 3. 如何在onItemClick处理程序中获取物品ID
- 4. 获取线程ID
- 5. 如何获得线程ID在C#
- 6. 如何从RWThreadId获取Linux线程ID?
- 7. 如何获取Android线程ID?
- 8. 获取唯一的线程ID
- 9. 在一个进程中创建的posix线程可以跨两个物理处理器并行运行吗?
- 10. 从线程获取线程ID
- 11. 如何分割一个id并获取一个数字?
- 12. C++如何获取父进程ID
- 13. 如何在Linux中使用C获取物理CPU的数量?
- 14. 如何使用C#获取IP地址的物理(MAC)地址?
- 15. C++获取处理器ID
- 16. 获取线程ID在Gmail
- 17. Tinythread ++:获取线程ID
- 18. 如何从某个电子邮件获取gmail的线程ID
- 19. 如何从线程池中获取线程ID?
- 20. 如何获取进程中使用的.DLL的(物理)baseaddress?
- 21. 并行线程和用C
- 22. 如何通过C字符串数组给一个线程(并行线程)
- 23. C#线程并行
- 24. 如何在UWP应用程序中获取物理对角线屏幕大小
- 25. 如何获取网站/应用程序的物理路径
- 26. 如何在多线程的C++运行过程中获取线程跟踪?
- 27. 使用C#获取Windows 8上的当前线程ID
- 28. 如何在linux c程序中获得pthread的线程ID?
- 29. 如何获取物品的id值(物品内)?
- 30. 使用C#获取插入行的ID
其实我没有仔细回答之前阅读您的问题..'shced_getcpu'只返回逻辑ID。我想你需要在/ proc/cpuinfo中查看它以获取物理信息(物理CPU,核心,超线程等)。 – chys