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日星期四

Linux conditional variable

Aim

This is a wrapper of linux conditional variable. You can wait with a given time or just wait forever.

Source



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

#include "LinuxCond.h"

LinuxCond cond;
void firstWorker()
{
    int count = 0;
    while (count++ < 5)
    {
        std::cout << "firstWorker say Hello" << std::endl;
        cond.Wait();
    }
}
void secondWorker()
{
    int count = 0;
    while (count++ < 5)
    {
        std::cout << "secondWorker say Hello" << std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
        cond.Signal();
    }
}
int main(int argc, char *argv[])
{
    std::thread worker1(firstWorker); worker1.detach();
    std::thread worker2(secondWorker); worker2.detach();

    int count = 0;
    while (count++ < 5)
    {
        std::this_thread::sleep_for(std::chrono::seconds(2));
    }

    return 0;
}

Output

$ ./src/LinuxCond 
firstWorker say Hello
secondWorker say Hello
secondWorker say Hello
firstWorker say Hello
secondWorker say Hello
firstWorker say Hello
secondWorker say Hello
firstWorker say Hello
secondWorker say Hello
firstWorker say Hello

沒有留言:

發佈留言