gpt4 book ai didi

c - 同一台机器相同的程序不同的cpu时间。为什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:35 26 4
gpt4 key购买 nike

我的 C 程序中有一个线程在做一些工作。我在我的程序中使用 pthread_create() 在 for 循环中多次运行该线程,如下所示。

for (i=0; i<20; i++) {
pthread_create(&thread[i], NULL, thread_run, result_thread[i]);
pthread_join(thread[i], NULL);
}

我还使用 pthread_getcpuclockid() 跟踪这些线程的 CPU 时间。问题是即使输入相同,这些线程的 cpu 时间也可能非常不同。

例如看下面我记录的一组cpu时间(以毫秒为单位)。

0.0051 0.0127 0.0113 0.0106 0.0117 0.0125 0.0120 0.0112 0.0111 0.0193 0.0112 0.0162 0.0036 0.0036 0.0035 0.0036 0.0035 0.0036 0.0036 0.0036

造成这些差异的原因可能是什么?

顺便说一句,我正在使用 Ubuntu。

最佳答案

这里有很多变数,这取决于你的线程代码做了什么,甚至你的内核是如何构建的。如果您的线程正在进行任何系统调用(可能是),那么您就是在要求您的内核为您做一些事情,所以它甚至并不总是您的代码在运行。如果你有一个可抢占的内核,那么你的内核可能会在某个时候决定停止执行你的线程并去做其他事情。甚至可能会发生一些内存交换,在这种情况下,您会看到性能上的巨大差异。简而言之,这是你的内核的错,但它只是在做它应该做的事情。

关于c - 同一台机器相同的程序不同的cpu时间。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198541/

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