У меня есть два класса: один основной класс и другой класс сервера. Я вызываю метод run в классе сервера как отдельный поток от основного класса. Мне нужно периодически передавать значения из основного класса в класс сервера.
Я пытался использовать std :: atomic, но значение в потоке не меняется.
Я делаю что-то не так внизу? Любая помощь или совет высоко ценится. БЛАГОДАРЯ.
#include <iostream>
#include "server.h"
#include "atomic"
using namespace std;
std::atomic<int> clientSignal(-1);
void foo();
int main()
{
cout << "Hello World!" << endl;
server* board;
board = new server();
thread serverThread(&server::run,*board,std::ref(clientSignal));
serverThread.join();
foo(); // the value of clientSignal is changed from within main class //based on input from sensors.
return 0;
}
void foo(){
clientSignal = 8;
}
server.h
#ifndef SERVER_H
#define SERVER_H
class server
{
public:
server();
~server();
void run(std::atomic<int> &clientSignal);
private:
std::atomic<int> *clientFlag;
};
#endif // SERVER_H
server.cpp
#include "server.h"
server::server()
{
}
server::~server()
{
}
void server::run(std::atomic<int> &clientSignal) {
clientFlag = &clientSignal;
cout << *clientFlag;
...
}