mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-24 14:40:12 +01:00
Switch scheduler to steady_clock
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
|
||||
#include <scheduler.h>
|
||||
|
||||
#include <random.h>
|
||||
#include <sync.h>
|
||||
#include <util/syscall_sandbox.h>
|
||||
#include <util/time.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <cassert>
|
||||
#include <functional>
|
||||
#include <utility>
|
||||
|
||||
@@ -43,7 +43,7 @@ void CScheduler::serviceQueue()
|
||||
// the time of the first item on the queue:
|
||||
|
||||
while (!shouldStop() && !taskQueue.empty()) {
|
||||
std::chrono::system_clock::time_point timeToWaitFor = taskQueue.begin()->first;
|
||||
std::chrono::steady_clock::time_point timeToWaitFor = taskQueue.begin()->first;
|
||||
if (newTaskScheduled.wait_until(lock, timeToWaitFor) == std::cv_status::timeout) {
|
||||
break; // Exit loop after timeout, it means we reached the time of the event
|
||||
}
|
||||
@@ -72,7 +72,7 @@ void CScheduler::serviceQueue()
|
||||
newTaskScheduled.notify_one();
|
||||
}
|
||||
|
||||
void CScheduler::schedule(CScheduler::Function f, std::chrono::system_clock::time_point t)
|
||||
void CScheduler::schedule(CScheduler::Function f, std::chrono::steady_clock::time_point t)
|
||||
{
|
||||
{
|
||||
LOCK(newTaskMutex);
|
||||
@@ -89,7 +89,7 @@ void CScheduler::MockForward(std::chrono::seconds delta_seconds)
|
||||
LOCK(newTaskMutex);
|
||||
|
||||
// use temp_queue to maintain updated schedule
|
||||
std::multimap<std::chrono::system_clock::time_point, Function> temp_queue;
|
||||
std::multimap<std::chrono::steady_clock::time_point, Function> temp_queue;
|
||||
|
||||
for (const auto& element : taskQueue) {
|
||||
temp_queue.emplace_hint(temp_queue.cend(), element.first - delta_seconds, element.second);
|
||||
@@ -114,8 +114,8 @@ void CScheduler::scheduleEvery(CScheduler::Function f, std::chrono::milliseconds
|
||||
scheduleFromNow([this, f, delta] { Repeat(*this, f, delta); }, delta);
|
||||
}
|
||||
|
||||
size_t CScheduler::getQueueInfo(std::chrono::system_clock::time_point& first,
|
||||
std::chrono::system_clock::time_point& last) const
|
||||
size_t CScheduler::getQueueInfo(std::chrono::steady_clock::time_point& first,
|
||||
std::chrono::steady_clock::time_point& last) const
|
||||
{
|
||||
LOCK(newTaskMutex);
|
||||
size_t result = taskQueue.size();
|
||||
@@ -143,7 +143,7 @@ void SingleThreadedSchedulerClient::MaybeScheduleProcessQueue()
|
||||
if (m_are_callbacks_running) return;
|
||||
if (m_callbacks_pending.empty()) return;
|
||||
}
|
||||
m_scheduler.schedule([this] { this->ProcessQueue(); }, std::chrono::system_clock::now());
|
||||
m_scheduler.schedule([this] { this->ProcessQueue(); }, std::chrono::steady_clock::now());
|
||||
}
|
||||
|
||||
void SingleThreadedSchedulerClient::ProcessQueue()
|
||||
|
||||
Reference in New Issue
Block a user