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