1

我目前正在爲C++使用綠色線程使用工作竊取來實現多個硬件線程上的調度器之間的負載平衡。主線程上下文在不同的硬件線程中返回,未定義的行爲?

我已將主環境固定到其硬件線程,這意味着它不會被盜,因此遷移到其他硬件線程。

我相信我已經讀過這個地方,如果主要上下文在哪裏被盜,並返回(退出)在不同的硬件線程中從它的起源地是未定義的行爲。但是,我現在似乎無法找到任何消息來源。

這是不確定的行爲?引用來源將是完美的。

回答

1

首先,標準C++中沒有綠色線程。因此,製作自己的堆棧並替換它們的整個過程都是未定義的行爲。 UB並不意味着有些事情不會起作用。這意味着它不能保證它可以在任何符合標準的系統上工作。

綠色線程/協程在UB的邊緣進行平衡,從而爲每個支持的平臺實現。他們工作,因爲他們是爲特定的平臺編寫的,並有克隆來克服這些平臺上的不同坑。

相關問題