Cách đây một thời gian dài, tôi đã có lỗi trong chương trình của mình. Nguyên nhân gốc là chức năng CBộ hẹn giờ có độ chính xác tốt hơn so với giấc ngủ()
sleep(60);
sẽ hiếm khi ngủ dưới 60 giây. Hoặc chức năng đã làm cho luồng ngủ hơn 60 giây, nhưng đồng hồ đã được thay đổi tự động bởi hệ điều hành (điều này có vẻ là do lỗi chỉ xảy ra trên XX::00::00
), còn được gọi là hiếm khi xảy ra và chỉ vào "giờ tròn" (ngủ shoudl đã kết thúc tại> xh0m0s, nó kết thúc vào x-1h59m59.99*s
).
Sau đó, quản lý dự án của tôi đã đi trên một rant như thế nào ông nói triệu lần mà chúng ta chỉ nên sử dụng bộ đếm thời gian, không ngủ. Kể từ thời điểm đó, tôi chấp nhận khái niệm rằng giờ là chính xác hơn ngủ(), nhưng bây giờ tôi cảm thấy rằng tôi nên yêu cầu một số nguồn có thẩm quyền hơn. Vì vậy:
- là giờ chính xác hơn ngủ?
- (có liên quan) là chúng sâu xuống (ở cấp hệ điều hành) được triển khai bằng các phương pháp khác nhau?
Tôi biết giờ được sử dụng để thực hiện cuộc gọi lại, chỉ trì hoãn thực hiện chuỗi hiện tại, Im nói về phần thực thi chậm trễ của việc triển khai.
BTW OS là Linux, nhưng tôi quan tâm đến câu trả lời chung nếu có thể.
Trong cả hai trường hợp, nó không phải là một ý tưởng tốt để mong đợi một hoạt động hẹn giờ/ngủ để thực sự tạm dừng trong thời gian nhất định. Hệ điều hành làm tất cả những gì có thể để tôn trọng yêu cầu của bạn, nhưng đôi khi nó sẽ thất bại. Hãy chuẩn bị cho nó. – TheZ
Tôi biết rằng bây giờ, lỗi "sửa chữa" (sau khi người quản lý bình tĩnh lại từ rant giờ của mình) chỉ là thêm một số chậm trễ an toàn. – NoSenseEtAl
Nghe có vẻ như có một vấn đề kiến trúc sâu hơn nếu sự khác biệt +/- 1 giây trong giấc ngủ khiến mọi thứ bị hỏng ... – Rook