首页 > 解决方案 > CLOCK_REALTIME 和 CLOCK_MONOTONIC 一次调用

问题描述

我一个接一个地使用clock_gettime(CLOCK_MONOTONIC, &tsp1)and clock_gettime(CLOCK_REALTIME, &tsp2)。我可以通过一个电话来减少差异吗?

标签: c

解决方案


没有标准的、可移植的方式来做到这一点——clock_gettime基于不支持这种“多查询”的操作系统功能。扩展此功能并非易事 - 可能需要开发一个驱动程序来为您公开此功能。


特别是在 Linux 上,这可能相对容易,不需要编写驱动程序。

在 Linux 上,clock_gettime实际上并不调用内核 - 它使用vdso允许内核向用户空间公开信息,而无需切换到内核模式。这种用法的典型例子是函数gettimeofdayclock_gettime- 这些不是特权函数(除了CLOCK_REALTIME,它确实需要一些特权)并且可以将信息提供给用户空间以提高效率。

您可以利用vdso自己直接访问数据-查看函数/lib/vdso/gettimeofday.c-访问公开的表vdso以获取当前时间。我专门链接到do_hres哪个似乎是直接访问时间戳的函数。

通过自己访问vdso表格,您可以最大限度地减少开销并减少两次调用之间的差异。


推荐阅读