在C ++中将数据发送到线程

时间:2019-03-18 11:37:20

标签: c++ multithreading atomic

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

    ...
}

0 个答案:

没有答案