Commit 73b6ea42 authored by Pavel Vainerman's avatar Pavel Vainerman Committed by Pavel Vainerman

(timers): used steady_clock instead high_resolution_clock

parent 4ed50544
......@@ -314,7 +314,7 @@ void UNetReceiver::statisticsEvent(ev::periodic& tm, int revents) noexcept
return;
}
t_end = chrono::high_resolution_clock::now();
t_end = chrono::steady_clock::now();
float sec = chrono::duration_cast<chrono::duration<float>>(t_end - t_stats).count();
t_stats = t_end;
stats.recvPerSec = recvCount / sec;
......@@ -537,7 +537,7 @@ void UNetReceiver::readEvent( ev::io& watcher ) noexcept
return;
bool ok = false;
t_start = chrono::high_resolution_clock::now();
t_start = chrono::steady_clock::now();
try
{
......@@ -564,7 +564,7 @@ void UNetReceiver::readEvent( ev::io& watcher ) noexcept
ptRecvTimeout.reset();
}
t_end = chrono::high_resolution_clock::now();
t_end = chrono::steady_clock::now();
stats.recvProcessingTime_microsec = std::chrono::duration_cast<std::chrono::microseconds>(t_end - t_start).count();
}
// -----------------------------------------------------------------------------
......@@ -621,7 +621,7 @@ void UNetReceiver::updateEvent( ev::periodic& tm, int revents ) noexcept
bool recvOk = checkConnection();
// обновление данных в SM
t_start = chrono::high_resolution_clock::now();
t_start = chrono::steady_clock::now();
try
{
......@@ -632,7 +632,7 @@ void UNetReceiver::updateEvent( ev::periodic& tm, int revents ) noexcept
unetcrit << myname << "(updateEvent): " << ex.what() << std::endl;
}
t_end = chrono::high_resolution_clock::now();
t_end = chrono::steady_clock::now();
stats.upProcessingTime_microsec = std::chrono::duration_cast<std::chrono::microseconds>(t_end - t_start).count();
if( sidRespond != DefaultObjectId )
......
......@@ -218,9 +218,9 @@ namespace uniset
// счётчики для подсчёта статистики
size_t recvCount = { 0 };
size_t upCount = { 0 };
std::chrono::system_clock::time_point t_start;
std::chrono::system_clock::time_point t_end;
std::chrono::system_clock::time_point t_stats;
std::chrono::steady_clock::time_point t_start;
std::chrono::steady_clock::time_point t_end;
std::chrono::steady_clock::time_point t_stats;
// текущая статистика
struct Stats
......
......@@ -277,7 +277,7 @@ int main(int argc, char* argv[])
if( ncycles > 0 )
nc = ncycles;
auto t_start = high_resolution_clock::now();
auto t_start = steady_clock::now();
unsigned int npack = 0;
......@@ -287,7 +287,7 @@ int main(int argc, char* argv[])
{
if( nprof > 0 && npack >= nprof )
{
auto t_end = high_resolution_clock::now();
auto t_end = steady_clock::now();
float sec = duration_cast<duration<float>>(t_end - t_start).count();
cout << "Receive " << setw(5) << npack << " packets for " << setw(8) << sec << " sec "
<< " [ 1 packet per " << setw(10) << ( sec / (float)npack ) << " sec ]" << endl;
......
......@@ -229,7 +229,7 @@ int main(int argc, char* argv[])
if( ncycles > 0 )
nc = ncycles;
auto t_start = high_resolution_clock::now();
auto t_start = steady_clock::now();
unsigned int npack = 0;
......@@ -239,7 +239,7 @@ int main(int argc, char* argv[])
{
if( nprof > 0 && npack >= nprof )
{
auto t_end = high_resolution_clock::now();
auto t_end = steady_clock::now();
float sec = duration_cast<duration<float>>(t_end - t_start).count();
cout << "Receive " << setw(5) << npack << " packets for " << setw(8) << sec << " sec "
<< " [ 1 packet per " << setw(10) << ( sec / (float)npack ) << " sec ]" << endl;
......
......@@ -118,7 +118,7 @@ namespace uniset
// отделяем внутреннее (теперь уже стандартное >= c++11)
// представление для работы со временем (std::chrono)
// и тип (t_msec) для "пользователей"
std::chrono::high_resolution_clock::time_point t_start; /*!< время установки таймера (сброса) */
std::chrono::steady_clock::time_point t_start; /*!< время установки таймера (сброса) */
std::chrono::milliseconds t_inner_msec; /*!< время установки таймера, мсек (в единицах std::chrono) */
private:
......
......@@ -63,7 +63,7 @@ namespace uniset
do
{
status = future.wait_for(std::chrono::milliseconds(tout_msec));
status = future.wait_until(std::chrono::steady_clock::now() + std::chrono::milliseconds(tout_msec));
if( status == std::future_status::timeout )
return false;
......@@ -99,7 +99,7 @@ namespace uniset
do
{
status = future.wait_for(std::chrono::milliseconds(tout_msec));
status = future.wait_until(std::chrono::steady_clock::now() + std::chrono::milliseconds(tout_msec));
if( status == std::future_status::timeout )
return false;
......
......@@ -297,7 +297,7 @@ namespace uniset
ulogsys << "(FINISH GUARD THREAD): wait " << TERMINATE_TIMEOUT_SEC << " sec.." << endl << flush;
g_doneevent.wait_for(lk, std::chrono::milliseconds(TERMINATE_TIMEOUT_SEC * 1000), []()
g_doneevent.wait_until(lk, std::chrono::steady_clock::now() + std::chrono::milliseconds(TERMINATE_TIMEOUT_SEC * 1000), []()
{
return (g_done == true);
} );
......
......@@ -46,7 +46,7 @@ namespace uniset
thr = unisetstd::make_unique<std::thread>( [&] { CommonEventLoop::defaultLoop(); } );
std::unique_lock<std::mutex> lock2(looprunOK_mutex);
looprunOK_event.wait_for(lock2, std::chrono::milliseconds(waitTimeout_msec), [&]()
looprunOK_event.wait_until(lock2, std::chrono::steady_clock::now() + std::chrono::milliseconds(waitTimeout_msec), [&]()
{
return (isrunning == true);
} );
......@@ -70,7 +70,7 @@ namespace uniset
evprep.send(); // будим default loop
// ожидаем обработки evprepare (которая будет в defaultLoop)
prep_event.wait_for(locker, std::chrono::milliseconds(waitTimeout_msec), [ = ]()
prep_event.wait_until(locker, std::chrono::steady_clock::now() + std::chrono::milliseconds(waitTimeout_msec), [ = ]()
{
return ( prep_notify == true );
} );
......
......@@ -171,7 +171,7 @@ namespace uniset
return true;
std::unique_lock<std::mutex> lock(looprunOK_mutex);
looprunOK_event.wait_for(lock, std::chrono::milliseconds(waitTimeout_msec), [&]()
looprunOK_event.wait_until(lock, std::chrono::steady_clock::now() + std::chrono::milliseconds(waitTimeout_msec), [&]()
{
return (isrunning == true);
} );
......
......@@ -23,6 +23,7 @@
#include <sstream>
#include <time.h>
#include "PassiveTimer.h"
#include <iostream>
// ------------------------------------------------------------------------------------------
using namespace std;
// ------------------------------------------------------------------------------------------
......@@ -66,10 +67,12 @@ namespace uniset
cv_working.wait(lk);
}
else
cv_working.wait_for(lk, std::chrono::milliseconds(t_msec), [&]()
{
cv_working.wait_until(lk, std::chrono::steady_clock::now() + std::chrono::milliseconds(t_msec), [&]()
{
return (terminated == true);
} );
});
}
terminated = true;
return true;
......
......@@ -51,7 +51,7 @@ namespace uniset
if( t_msec == 0 )
return true;
return ( std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - t_start).count() >= t_inner_msec.count() );
return ( std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - t_start).count() >= t_inner_msec.count() );
}
//------------------------------------------------------------------------------
......@@ -72,13 +72,13 @@ namespace uniset
// Запустить таймер
void PassiveTimer::reset(void) noexcept
{
t_start = std::chrono::high_resolution_clock::now();
t_start = std::chrono::steady_clock::now();
}
//------------------------------------------------------------------------------
// получить текущее значение таймера
timeout_t PassiveTimer::getCurrent() const noexcept
{
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - t_start).count();
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - t_start).count();
}
//------------------------------------------------------------------------------
timeout_t PassiveTimer::getInterval() const noexcept
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment