कोड का निम्नलिखित स्निपेट:
struct timespec ts;
for (int x = 0; x < 100000000; x++) {
timespec_get(&ts, TIME_UTC);
long cTime = (long) time(NULL);
if (cTime != ts.tv_sec && ts.tv_nsec < 3000000) {
printf("cTime: %ld\n", cTime);
printf("ts.tv_sec: %ld\n", ts.tv_sec);
printf("ts.tv_nsec: %ld\n", ts.tv_nsec);
}
}
इस उत्पादन का उत्पादन:
...
cTime: 1579268059
ts.tv_sec: 1579268060
ts.tv_nsec: 2527419
cTime: 1579268059
ts.tv_sec: 1579268060
ts.tv_nsec: 2534036
cTime: 1579268059
ts.tv_sec: 1579268060
ts.tv_nsec: 2540359
cTime: 1579268059
ts.tv_sec: 1579268060
ts.tv_nsec: 2547039
...
क्यों के बीच विसंगति cTime
और ts.tv_sec
? ध्यान दें कि अगर सशर्त को बदल दिया जाता है तो समस्या नहीं होती है ts.tv_nsec >= 3000000
। समस्या 3000000 से छोटे होने के कारण नैनोसेकंड पर निर्भर करती है।
timespec_get()
? यह C या C ++ है? लगता है std::timespec_get
। कृपया उपयुक्त टैग का उपयोग करें।
man
प्रविष्टि नहीं देख सका, timespec_get
इसलिए मैं निष्कर्ष पर पहुंच गया। समझ में आता है।