c - CLOCK_REALTIME 和 CLOCK_MONOTONIC 一次调用
问题描述
我一个接一个地使用clock_gettime(CLOCK_MONOTONIC, &tsp1)
and clock_gettime(CLOCK_REALTIME, &tsp2)
。我可以通过一个电话来减少差异吗?
解决方案
没有标准的、可移植的方式来做到这一点——clock_gettime
基于不支持这种“多查询”的操作系统功能。扩展此功能并非易事 - 可能需要开发一个驱动程序来为您公开此功能。
特别是在 Linux 上,这可能相对容易,不需要编写驱动程序。
在 Linux 上,clock_gettime
实际上并不调用内核 - 它使用vdso允许内核向用户空间公开信息,而无需切换到内核模式。这种用法的典型例子是函数gettimeofday
和clock_gettime
- 这些不是特权函数(除了CLOCK_REALTIME
,它确实需要一些特权)并且可以将信息提供给用户空间以提高效率。
您可以利用vdso
自己直接访问数据-查看函数/lib/vdso/gettimeofday.c
-访问公开的表vdso
以获取当前时间。我专门链接到do_hres
哪个似乎是直接访问时间戳的函数。
通过自己访问vdso
表格,您可以最大限度地减少开销并减少两次调用之间的差异。
推荐阅读
- c++ - 以下代码中的函数模板有什么问题?
- android - 从firebase检索数据到textview返回null如何解决?
- google-apps-script - 从 html 输入更新/编辑谷歌表格行值
- spring-boot - o.lettuce.core.RedisException::io.netty.util.internal.OutOfDirectMemoryError 从 Redis 检索大对象 (2MB)
- python - 没有足够的积分 (2) 提供给 Voronoi
- lisp - 尝试定义一个函数,该函数在数字列表中提供最小整数,具体使用 do 循环(不是 do* 或 dolist 等)
- python - k-means 的绘图结果
- stripe-payments - 使用多个支付提供商时处理存储卡详细信息
- java - 列表与数组或对象的通用上限
- python - 如何从循环内的if条件返回值并在循环python的第一个中使用它