Odliczenie czasu
Ostatnio zmodyfikowano 2016-12-26 01:19
Warmix Temat założony przez niniejszego użytkownika |
Odliczenie czasu » 2016-12-25 15:15:31 Potrzebuję zrobić coś takiego: Jakis tam kod if( a == 1 ) { rozpocznij odliczenie czasu w sekundach }
while( dopoki nie uplynelo 5 sekund ) { wykonuj kod }
dalsza czesc kodu W jaki sposób coś takiego osiągnąć? Jeśli będzie to ważne, to wykorzystam to w innym wątku, tak, żeby pętla while nie blokowała mi "dalszej częsci kodu", ale to już sobie jakoś sam przełożę, chodzi mi o samo sterowanie czasem i odliczanie. |
|
Gibas11 |
» 2016-12-25 15:19:17 std::chrono//edit: Naskrobałem na szybko jakąś klasę do tego, mniej–więcej tak sam bym to zrobił na co dzień. template < typename local_clock = std::chrono::steady_clock > class Wait { private: const std::chrono::time_point < local_clock > m_constructionTime; const double m_time; public: Wait( const double seconds ) : m_constructionTime { local_clock::now() } , m_time { seconds } { } bool check() const { using std::chrono::duration; const duration < double > dur( local_clock::now() - m_constructionTime ); return dur.count() > m_time; } };
//edit 2: Mam nadzieję, że nowe forum już blisko i ładniej się tam formatuje kod, bo to co mi się tu wstawiło jest, delikatnie mówiąc, wymiotogenne. Wait( const double seconds ) : m_constructionTime { local_clock::now() } , m_time { seconds } { }
|
|
michal11 |
» 2016-12-25 22:54:11 W konstruktorze zamiast double używaj seconds z chrono |
|
Gibas11 |
» 2016-12-25 23:29:45 Jest jakiś konkretny powód? Mam gwarancję, że dur.count() zwróci mi typ double z sekundami a std::chrono::seconds może przechowywać tylko wartości całkowite, więc muszę się przerzucić na milisekundy chcąc używać ułamków sekund albo bawić w konwersję zmiennoprzecinkowych sekund na całkowite milisekundy w konstruktorze itp. |
|
michal11 |
» 2016-12-26 00:37:07 |
|
Gibas11 |
» 2016-12-26 01:19:46 Chętnie obejrzę, ale raczej szybko nie będę miał godziny do zużycia na wykład o std::chrono . ;) |
|
« 1 » |