我一个接一个地使用clock_gettime(CLOCK_MONOTONIC, &tsp1)和clock_gettime(CLOCK_REALTIME, &tsp2)。我可以用一个电话来减少差别吗?
发布于 2021-09-15 08:19:35
没有标准的、可移植的方法-- clock_gettime是基于不支持这种“多查询”的操作系统功能的。扩展此功能并不简单,可能需要开发一个驱动程序来为您公开此功能。
特别是在Linux上,这可能比较容易,并且不需要编写驱动程序。
在Linux上,clock_gettime实际上并不调用内核--它使用允许内核向用户空间公开信息的vdso,而不必切换到内核模式。这种用法的典型例子是像gettimeofday和clock_gettime这样的函数--它们不是特权函数(除了CLOCK_REALTIME之外,它确实需要一些特权),而且为了提高效率,这些信息可以提供给用户空间。
您可以利用vdso直接访问数据--查看/lib/vdso/gettimeofday.c中的函数--这些函数访问向vdso公开的表以获取当前时间。我专门链接到do_hres,它似乎是直接访问时间戳的函数。
通过自己访问vdso表,可以最小化开销,减少两个调用之间的差异。
https://stackoverflow.com/questions/69188720
复制相似问题