1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/brinkqiang-dmtimer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

dmtimer

Copyright (c) 2013-2018 brinkqiang (brink.qiang@gmail.com)

dmtimer License blog Open Source Love GitHub stars GitHub forks

Build status

[Linux][lin-link] [Mac][mac-link] [Windows][win-link]
![lin-badge] ![mac-badge] ![win-badge]

[lin-badge]: https://github.com/brinkqiang/dmtimer/workflows/linux/badge.svg «linux build status» [lin-link]: https://github.com/brinkqiang/dmtimer/actions/workflows/linux.yml «linux build status» [mac-badge]: https://github.com/brinkqiang/dmtimer/workflows/mac/badge.svg «mac build status» [mac-link]: https://github.com/brinkqiang/dmtimer/actions/workflows/mac.yml «mac build status» [win-badge]: https://github.com/brinkqiang/dmtimer/workflows/win/badge.svg «win build status» [win-link]: https://github.com/brinkqiang/dmtimer/actions/workflows/win.yml «win build status»

Doc

Intro

C++ high performance timer


#include "dmutil.h"
#include "dmtimermodule.h"
#include "dmsingleton.h"
#include "dmthread.h"
#include "dmconsole.h"
#include "dmtypes.h"

class CPlayer : public CDMTimerNode {
  public:
    virtual void OnTimer( uint64_t qwIDEvent );
};

class CMain :
    public IDMConsoleSink,
    public IDMThread,
    public CDMThreadCtrl,
    public CDMTimerNode,
    public TSingleton<CMain> {
    friend class TSingleton<CMain>;

    enum {
        eMAX_PLAYER = 100 * 10000,
        eMAX_PLAYER_EVENT = 10,
    };

    typedef enum {
        eTimerID_UUID = 0,
        eTimerID_STOP,
    } ETimerID;

    typedef enum {
        eTimerTime_UUID = 1000,
        eTimerTime_STOP = 10000,
    } ETimerTime;

  public:

    virtual void ThrdProc() {
        std::cout << "test start" << std::endl;

        for ( int i = 0; i < eMAX_PLAYER; ++i ) {
            for ( int j = 1; j <= eMAX_PLAYER_EVENT; ++j ) {
                m_oPlayers[i].SetTimer( j, 500 );
            }
        }

        SetTimer( eTimerID_UUID, eTimerTime_UUID,
                  dm::any( std::string( "hello world" ) ) );
        SleepMs( 300 );
        CDMTimerModule::Instance()->Run();

        SetTimer(eTimerID_STOP, eTimerTime_STOP);
        // test interface
        uint64_t qwElapse = GetTimerElapse( eTimerID_UUID );
        std::cout << "test GetTimerElapse: " << qwElapse << std::endl;
        uint64_t qwRemain = GetTimerRemain( eTimerID_UUID );
        std::cout << "test GetTimerRemain: " << qwRemain << std::endl;
        CDMTimerElement* poElement = GetTimerElement( eTimerID_UUID );
        bool bBusy = false;

        while ( !m_bStop ) {
            bBusy = false;

            if ( CDMTimerModule::Instance()->Run() ) {
                bBusy = true;
            }

            if ( __Run() ) {
                bBusy = true;
            }

            if ( !bBusy ) {
                SleepMs( 1 );
            }
        }

        std::cout << "test stop" << std::endl;
    }

    virtual void Terminate() {
        m_bStop = true;
    }

    virtual void OnCloseEvent() {
        Stop();
    }

    virtual void OnTimer( uint64_t qwIDEvent, dm::any& oAny ) {
        switch ( qwIDEvent ) {
        case eTimerID_UUID: {
            std::cout << DMFormatDateTime() << " " << CMain::Instance()->GetOnTimerCount()
                      << " " << dm::any_cast<std::string>( oAny ) << std::endl;
        }
        break;

Здесь представлен перевод исходного текста на русский язык. **API test**

Запускаем main() из gtest_main.cc [==========] Запуск 7 тестов из 7 тестовых случаев. [----------] Настройка глобальной среды тестирования. [----------] 1 тест из clock_realtime_coarse [ RUN ] clock_realtime_coarse.clock_realtime_coarse 185306418897129146 [ OK ] clock_realtime_coarse.clock_realtime_coarse (625 мс) [----------] 1 тест из clock_realtime_coarse (всего 630 мс)

[----------] 1 тест из clock_realtime [ RUN ] clock_realtime.clock_realtime 185306526911819519 [ OK ] clock_realtime.clock_realtime (1609 мс) [----------] 1 тест из clock_realtime (всего 1609 мс)

[----------] 1 тест из clock_monotonic [ RUN ] clock_monotonic.clock_monotonic 253981295601526960 [ OK ] clock_monotonic.clock_monotonic (1608 мс) [----------] 1 тест из clock_monotonic (всего 1608 мс)

[----------] 1 тест из gettimeofday [ RUN ] gettimeofday.gettimeofday 185306852249981606 [ OK ] gettimeofday.gettimeofday (1681 мс) [----------] 1 тест из gettimeofday (всего 1681 мс)

[----------] 1 тест из chrono_system_clock [ RUN ] chrono_system_clock.chrono_system_clock 185308930355752908 [ OK ] chrono_system_clock.chrono_system_clock (39878 мс) [----------] 1 тест из chrono_system_clock (всего 39878 мс)

[----------] 1 тест из chrono_steady_clock [ RUN ] chrono_steady_clock.chrono_steady_clock 253987528206487313 [ OK ] chrono_steady_clock.chrono_steady_clock (39935 мс) [----------] 1 тест из chrono_steady_clock (всего 39935 мс)

[----------] 1 тест из high_resolution_clock [ RUN ] high_resolution_clock.high_resolution_clock 185316910674516278 [ OK ] high_resolution_clock.high_resolution_clock (39863 мс) [----------] 1 тест из high_resolution_clock (всего 39863 мс)

[----------] Очистка глобальной тестовой среды [==========] Запущено 7 тестов из 7 тестовых случаев (всего 125204 мс) [ PASSED ] 7 тестов.


**Контакты**

**Спасибо**
pudding_186@163.com  
will@i007.cc

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/brinkqiang-dmtimer.git
git@api.gitlife.ru:oschina-mirror/brinkqiang-dmtimer.git
oschina-mirror
brinkqiang-dmtimer
brinkqiang-dmtimer
master