不间断地执行Cpp Linux代码
uninterrupted execution of Cpp Linux code
嗨,有一种方法,我可以使我的代码从其他操作系统中断等在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
这样的分析器。该工具还为您提供了程序的功能所消耗的确切时间,几乎不受其他操作的干扰。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 找不到Linux Visual Studio代码C++文件
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- 在 Linux 群集上运行 Windows C++代码
- [longjmp/setjmp]c++ 相同的代码窗口有异常 Linux 没有错误并且运行良好
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- 我在使用 boost::serialization 时遇到了一个问题,我的代码在 Linux 中运行良好,但在 Wind
- 使用 execv 从C++代码执行的 Linux 脚本失败
- 如何从支持linux/mac操作系统的第三方代码为我的c#项目创建dll
- linux mint进程上的代码块已终止,状态为-1
- C Linux代码破坏Windows构建,因为缺少标头意味着功能不确定
- C++ - 移植 Linux 代码 - _vscprintf返回错误数量的参数
- 使用Linux C代码和标头文件来编译Windows DLL
- 在 Windows 上编译+分发 Linux 代码
- 不间断地执行Cpp Linux代码
- 在windows下运行linux c++代码
- 针对windows的Linux c++代码修改