问题分类 [多线程]

提问

1

价值

1

答案

90

浏览

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

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

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

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

ava
BestAns

2022-6-7

技术讨论社区