不间断地执行Cpp Linux代码

uninterrupted execution of Cpp Linux code

本文关键字:Linux 代码 Cpp 执行 不间断      更新时间:2023-10-16

嗨,有一种方法,我可以使我的代码从其他操作系统中断等在Linux GNU安全?例如,如果我有下面的代码,我需要找到准确的执行时间,没有其他东西打断我的代码。

我已经查看了pthread_mutex_lock(&cs_mutex);,但无法阻止其他操作运行。

while(1){
//start some method to block other OS overheads
c_start=clock();
some_function();
c_end=clock();
//stop OS overhead block
//calculate time 
}

可以使用clock_gettime:

timespec ts;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);

它不会阻止其他进程打断你的代码,但它只会计算你的进程执行的时间,并考虑到这些中断。

您不能锁定整个系统来获取只有您的进程使用的运行时间。如果您看一下简单的time命令,您可以看到您的操作系统知道哪些时间用于您的应用程序,哪些时间用于系统的其他操作:

[krud@unknown001742754ee6 ~]$ time sleep 1
real    0m1.025s
user    0m0.000s
sys     0m0.001s

正如你所看到的,sleep命令需要1秒多一点的时间,但是在用户级别只消耗"什么都没有",而在系统模式只消耗几微秒。

如果你想知道代码的每个函数需要多少时间,使用像gprof这样的分析器。该工具还为您提供了程序的功能所消耗的确切时间,几乎不受其他操作的干扰。