我尽可能多地搜索谷歌,但我找不到任何好的答案。
localtime_r 应该是用于获取系统时间的线程安全函数。但是,当使用 Valgrind --tool=drd 检查我的应用程序时,它始终告诉我此函数存在数据竞争条件。常见的搜索结果是在骗我,还是我只是错过了什么?用互斥锁包围每个 localtime_r 调用似乎效率不高,特别是如果它首先应该是线程安全的。这是我使用它的方式:
timeval handlerTime;
gettimeofday(&handlerTime,NULL);
tm handlerTm;
localtime_r(&handlerTime.tv_sec,&handlerTm);
有任何想法吗?