【问题标题】:Main thread context returning in a different hardware thread, undefined behaviour?主线程上下文在不同的硬件线程中返回,未定义的行为?
【发布时间】:2017-10-13 08:06:57
【问题描述】:

我目前正在为具有绿色线程的 C++ 并发库工作,该库使用工作窃取来实现多个硬件线程上的调度程序之间的负载平衡。

我已将主上下文固定到其硬件线程,这意味着它不能被窃取,因此无法迁移到其他硬件线程。

我相信我已经在某处读过这篇文章,如果主上下文被盗并在不同的硬件线程中返回(退出)它来自它的来源是未定义的行为。但是,我现在似乎找不到任何有关这方面的资料。

这是未定义的行为吗?引用来源将是完美的。

【问题讨论】:

    标签: multithreading c++11 undefined-behavior green-threads work-stealing


    【解决方案1】:

    首先,标准 C++ 中没有绿色线程。因此,制作自己的堆栈并替换它们的整个过程是未定义的行为。 UB 并不意味着某些东西不起作用。这意味着不能保证它可以在任何符合标准的系统上运行。

    绿色线程/协程在 UB 边缘平衡,为每个支持的平台实现。它们之所以有效,是因为它们是为特定平台编写的,并且具有克服这些平台上不同陷阱的能力。

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 2017-08-21
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 2013-01-23
      • 2014-07-18
      相关资源
      最近更新 更多