我通过输入相同的参数两次使用函数MaterialTextfield.prototype.init()
。
但是,我可能得到不同的结果。后者可能还有一秒钟。代码如下。
localtime
我打印出结果。第一个可能像ptCurrentTime = localtime(&(t_TriggerTime));
ptCurrentTime = localtime(&(t_TriggerTime));
,第二个可能像2015-11-07 22:19:56.123
。
这是正常的吗?
答案 0 :(得分:4)
不会发生这种变化是不正常的。在下列情况下,通常只能获得不同的值:
t_TriggerTime
更改;或localtime()
函数中存在严重错误;或最后一点需要深入研究。如果某个其他执行线程也在调用时间函数,localtime()
通常会返回一个内部对象的地址,可以在不知道的情况下对其进行修改。
如果事实证明这是问题,多线程系统可能会提供一个线程安全的变体,它使用您提供的对象而不是共享的内部对象。例如,
struct tm tms;
struct tm *ptms = localtime_r (&t_TriggerTime, &tms);
// ptms is now &tms, so use ptms->X (or tms.X).
但是,我也会非常仔细地检查您的打印代码,标准struct tm
没有亚秒级分辨率的概念,因此我不知道您的.123
来自哪里。< / p>