Như có thể được đọc tại địa chỉ:boost :: deadline_timer có thể thất bại khi đồng hồ hệ thống được sửa đổi
https://svn.boost.org/trac/boost/ticket/3504
một deadline_timer rằng thờ gian tạm ngưng theo định kỳ và được triển khai sử dụng deadline_timer :: expires_at() (như ví dụ ở Boost Timer Tutorial, 3th example) có thể sẽ thất bại nếu thời gian hệ thống được sửa đổi (ví dụ, sử dụng lệnh ngày, nếu hệ điều hành của bạn là Linux).
Có cách nào đơn giản và thuận tiện để thực hiện thao tác này ngay bây giờ không, bằng cách sử dụng Boost? Tôi không muốn sử dụng deadline_timer :: expires_from_now() vì tôi có thể xác minh rằng nó ít chính xác hơn "thủ công" cập nhật thời gian hết hạn.
Là giải pháp thời gian tôi quyết định, trước khi đặt giá trị expires_at mới, hãy tính khoảng thời gian giữa bây giờ() và expires_at(). Nếu nó tăng hơn gấp đôi mức trễ định kỳ, thì tôi đặc biệt sử dụng expires_from_now() để đồng bộ hóa với thời gian tuyệt đối mới.
Giải pháp tạm thời, chơi chữ đẹp :) – Thomas