Gần đây tôi đã bắt gặp sự cần thiết phải ngủ chủ đề hiện tại trong một khoảng thời gian chính xác. Tôi biết hai phương pháp làm như vậy trên nền tảng POSIX: sử dụng nanosleep()
hoặc sử dụng boost::this_thread::sleep()
.boost :: this_thread :: sleep() so với nanosleep()?
Ngoài sự tò mò hơn bất cứ điều gì khác, tôi đã tự hỏi sự khác biệt giữa hai cách tiếp cận là gì. Có sự khác biệt về độ chính xác không và có bất kỳ lý do nào không không để sử dụng phương pháp Tăng cường không?
nanosleep()
cách tiếp cận:
#include <time.h>
...
struct timespec sleepTime;
struct timespec returnTime;
sleepTime.tv_sec = 0;
sleepTime.tv_nsec = 1000;
nanosleep(&sleepTime, &returnTime);
Boost cách tiếp cận:
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
...
boost::this_thread::sleep(boost::posix_time::nanoseconds(1000));
Chỉ một lưu ý nhỏ cho ví dụ: 'nano giây 'không khả dụng trên tất cả các hệ thống. Sử dụng 'micro giây 'sẽ an toàn hơn. – real4x