【问题标题】:Testing on a single-core PC with hyperthreading在具有超线程的单核 PC 上进行测试
【发布时间】:2010-12-04 10:27:27
【问题描述】:

如果多线程程序在具有超线程的单核 CPU 上安全运行,它是否也可以在具有超线程的双核 CPU 上安全运行?关于线程安全等。

编辑

好的,我试着更具体一些。我的意思是糟糕的源代码行,我会忘记或无法确保它们不会是(并发)问题。

因此,也许 1 核 htt 通过防止死锁、崩溃、cpu 峰值或我的代码在 2 核机器上引起的任何事情来“撒谎”。我不确定,htt PC 的 2 个(逻辑)处理器与双核 PC 的 2 个处理器有何不同,htt 的透明度如何。如果有任何问题,我可能会为此购买第二台 PC,这就是我问的原因。

【问题讨论】:

  • “安全”是否意味着当您反复运行程序时,它从未发生过崩溃,或者是否意味着您已确保(通过仔细编码)不会出现并发你的代码有问题吗?在前一种情况下,您可能很幸运;在后一种情况下,CPU 内核的数量(理论上)不应该产生影响。
  • 我尽量避免并发问题。但我想知道,由于我目前的 PC 是单核的,双核是否会使我的程序面临更多问题?万一我的程序写得不够好,单核htt PC会不会少崩溃?
  • ...可能是死锁场景或任何情况。我想,购买双核机器可能是最好的。只是试图说服理论上单核 htt 机器足以进行测试。

标签: multithreading hyperthreading


【解决方案1】:

您的问题必须更加准确;只是抛出“线程安全等”在问题的最后并不能说服我您知道使用线程的含义。多线程应用程序是用什么语言编写的,您使用的是什么操作系统版本,您考虑使用什么芯片组?

无论如何,答案是 - 超线程对操作系统“撒谎”,并说服它机器中的物理内核比实际内核多。从操作系统的角度来看,单核超线程配置和双核非超线程配置没有区别。通过扩展,双核超线程配置只会使可用物理内核的数量增加一倍。

我认为您需要阅读有关您使用的芯片组的规范文件,以更深入地了解超线程是如何实现的,以及它是如何实现内存共享和同步的。

【讨论】:

  • 啊,找到了相关文档:download.intel.com/design/processor/manuals/253665.pdf。第2-22页是第一次提到超线程。
  • 我忘了,操作系统:Windows 7,语言:C 和汇编
  • 有趣。对于这样一个现代操作系统,我想说你没有什么可担心的,你使用的语言可以公开真正的操作系统线程而没有任何溺爱(与 Python 不同,它公开线程但使用全局锁来同步所有线程)。但如有疑问,请进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2021-06-21
相关资源
最近更新 更多