Linux 下多线程调用 gettimeofday 函数,偶尔得到的结果偏差很大

1

Linux 下面跑一个程序,大概 30 多个线程,用 gettimeofday 函数记录起始时间、结束时间从而计算出任务的完成时间。但是,多线程下的 gettimeofday 表现不稳定,偶尔会返回比较离谱的结果,数值偏差特别大。出错的概率,低于 1%。但是这个出错的概率也很要命,导致实验数据出错,完全没法用。

怀疑这个函数不是线程安全的,于是加上了互斥锁,但仍然会偶尔返回错误数据。

不是程序的问题,我已经简化了程序,单纯创建多线程并调用 gettimeofday,去掉了其他代码,仍然会偶尔返回错误数据。

有没有相关的解决方案?

ava
BestAns

2022-6-7

0

恰好刚遇到过这个问题,当时我怀疑是该函数不是线程安全的,加锁没能解决问题。

后来搜到有人说是 Linux 系统的一个 bug,于是升级系统(或者干脆重新装一个最新版)就好了。

ava
慢羊羊

2022-6-7

技术讨论社区