Pages - Menu

標籤

AWS (1) bash (1) Boost (2) C (2) CMake (2) Concurrency_Programming (3) CPP (37) Database (2) DNS (1) Docker (4) Docker-Compose (1) ELK (1) emacs (4) gcp (1) gdrive (1) git (1) gitbash (2) gitlab (1) kvm (4) Linux (5) MT4 (4) MT5 (4) Multicast (2) MySQL (2) Nijatrader8 (1) OpenCV (1) Python (4) QT5 (1) R (1) rdp (3) screenshot (1) ssh (3) Tabnine (1) TCP (1) TensorFlow (1) Tools (12) Ubuntu_1904 (11) Ubuntu_20_04 (5) UDP (1) VS2010 (1) VS2015 (1) VS2019 (1) WebServer (1) Win10 (1) winmerge (1) WSL (1) xrdp (1)

搜尋此網誌

2020年4月30日星期四

MSecTimer for function callback for Linux

Aim

This timer class will count for a MSec duration and do the callback to a function with arguments.

Source

github

#include <iostream>
#include <thread>
#include <chrono>

#include "MSecTimer.h"

class FooClass
{
public:
    FooClass() {}
    ~FooClass() {}

    static void PrintProxy(void *p, int x)
    {
        FooClass *c = (FooClass*)p;
        c->Print(x);
    }
    void Print(int x)
    {
        std::cout << "Print from class " << x << std::endl;
    }
};
void Foo(int x)
{
    std::cout << "Print from otuside " << x << std::endl;
}
void NormalCase()
{
    MSecTimer timer(1000, Foo, 10);
    timer.Start();
    int count = 0;
    while (count++ < 5)
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    timer.Stop();
}
void ClassCase()
{
    FooClass cc;
    MSecTimer timer(1000, FooClass::PrintProxy, &cc, 10);
    timer.Start();
    int count = 0;
    while (count++ < 5)
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    timer.Stop();
}
int main(int argc, char *argv[])
{
    NormalCase();
    ClassCase();

    return 0;
}

Output


$ ./src/MSecTimer 
Print from otuside 10
Print from otuside 10
Print from otuside 10
Print from otuside 10
Print from class 10
Print from class 10
Print from class 10
Print from class 10

沒有留言:

發佈留言