Đoạn mã sau:
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);
    }
}
tạo đầu ra này:
...
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
...
Tại sao sự khác biệt giữa cTimevà ts.tv_sec? Lưu ý rằng vấn đề không xảy ra nếu điều kiện được thay đổi thành ts.tv_nsec >= 3000000. Vấn đề phụ thuộc vào nano giây nhỏ hơn 3000000.
timespec_get()? Đây là C hay C ++? Vẻ thích std::timespec_get. Vui lòng sử dụng thẻ thích hợp.
                manmục timespec_gettrên hệ thống của mình nên tôi đã đi đến kết luận. Có ý nghĩa.