我有两个类,一个是主类,另一个是服务器类。我在服务器类中调用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;
...
}