gpt4 book ai didi

c++ - 如何知道线程上下文切换何时发生?

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:51 25 4
gpt4 key购买 nike

正如标题所说,我们如何知道在 c++ 中使用 std::threads 时上下文切换何时发生

例如

void a()
{
//some code
}
void b();
{
//some code
}

int main ()
{
thread th1 (a);
thread th2 (b);

th1.join();
th2.join();

return 0;
}

有没有办法知道 O.S 何时进行线程切换,我们实际上可以在处理相应函数时进行类似 print a 或 b 的描述。

注意:我使用互斥锁和控制变量,在它们上面放置一个简单的 cout<<"a is being processed"不一定描述真正的上下文切换。

最佳答案

可能没有要知道的上下文切换。

在具有两个(或更多)内核的机器上,您的两个线程可能同时运行,在它们完成之前根本不会发生上下文切换。

请记住,大多数当前的机器至少有两个内核,而具有 4 到 8 个内核的机器已经相当普遍。假设像这样的代码会导致任何 上下文切换基本上已经过时了。从理论上讲,它已经过时了很长时间(即, 并行机已经存在了几十年)。

现在它实际上已经完全过时了——即使你是通过翻找别人赠送或捐赠的垃圾来获得你的新计算机的,他们的旧垃圾仍然很有可能至少有两个核心,四个核心根本不是问题。

关于c++ - 如何知道线程上下文切换何时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39431621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com