mutex / condition_variable test
parent
66f95ad377
commit
3ed77f3e11
@ -0,0 +1,18 @@
|
|||||||
|
#include "CRunServer.h"
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
|
extern std::mutex mutex_;
|
||||||
|
extern std::condition_variable condVar;
|
||||||
|
extern bool dataReady;
|
||||||
|
|
||||||
|
CRunServer::CRunServer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRunServer::Auto()
|
||||||
|
{
|
||||||
|
std::cout << "Server Started..." << std::endl;
|
||||||
|
|
||||||
|
std::unique_lock<std::mutex> lck(mutex_);
|
||||||
|
condVar.wait(lck, [] { return dataReady; }); // (4)
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Run.h"
|
||||||
|
class CRunServer :
|
||||||
|
public Run
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CRunServer();
|
||||||
|
|
||||||
|
void Auto() override;
|
||||||
|
};
|
||||||
|
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
#include "RunClient.h"
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
|
extern std::mutex mutex_;
|
||||||
|
extern std::condition_variable condVar;
|
||||||
|
extern bool dataReady;
|
||||||
|
|
||||||
|
CRunClient::CRunClient()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRunClient::Auto()
|
||||||
|
{
|
||||||
|
std::cout << "Client Started" << std::endl;
|
||||||
|
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lck(mutex_);
|
||||||
|
dataReady = true;
|
||||||
|
}
|
||||||
|
std::cout << "Data prepared" << std::endl;
|
||||||
|
condVar.notify_one();
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Run.h"
|
||||||
|
class CRunClient :
|
||||||
|
public Run
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CRunClient();
|
||||||
|
|
||||||
|
void Auto();
|
||||||
|
};
|
||||||
|
|
||||||
Loading…
Reference in New Issue