mardi 3 mai 2022

How to run an instance of a class in thread?

For example i have a class player and some sub-Class Player1, Player2, extends Player using C++. Class Player have a method sendMessage() and receive Message() , and all of Player1,2 will override "run" to send message between each other !

class Player {
public:
    virtual void sendMessage();
    virtual void receiveMessage();

}
class Player1: public Player {
public:
    void sendMessage();
    void receiveMessage();
}

This question already has answers here: Start thread with member function (5 answers) Closed 8 years ago. I have a Class Player, and some sub-Class Player1, Player2, Player3 extends Player using C++. Class Player have a method "run", and all of Player1,2,3 will override "run" to do different things.

class Player {
public:
    virtual void run();
}
class Player1: public Player {
public:
    void run();
}

In "main" function I will create some instances of Player1,2. and i need to run every instance in a thread :

int main() {
    Player1 player1;
    Player2 player2;

    thread thread1(&Player::sendMessage,player1);
    thread thread2(&Player::receiveMessage,player1);

    thread thread3(&Player::sendMessage, player2);
    thread thread4(&Player::receiveMessage,player2);

    thread1.join();
    thread2.join();
    thread3.join();
    thread4.join();

    return 0;
}

In this way I am running each method of object player in thread, but how can I run all the methods of an object in one single thread? I am asking about this because I want the two objects to send messages to each other in a synchronized way!

Aucun commentaire:

Enregistrer un commentaire