Отправка данных в поток в C ++ - PullRequest
0 голосов
/ 18 марта 2019

У меня есть два класса: один основной класс и другой класс сервера. Я вызываю метод 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;

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...