How to call static function, member function by reference, value and pointer in thread.

It is very simple to call a member function or static member function from thread following is the example the shall help us.

For best understanding please COPYPASTE and RUN in any online compiler.

include <iostream>
#include <thread>
#include <string>
using namespace std;

class Suggest
{
    string m_name;
public:
    Suggest()
    {
        m_name="Tech";
    }
    void updateName(string str)
    {
        m_name=str;
    }
    void displayName()
    {
        cout<<"Name "<<m_name<<endl;
    }
    static void display(string str)
    {
        cout<<"Static Function Call :: "<<str<<endl;
    }
};
int main()
{
    //Call static function both ways are correct
    std::thread objThd(Suggest::display,"without &");
    objThd.join();

    std::thread objThd1(&Suggest::display,"with &");
    objThd1.join();

    cout<<endl<<"Call Member Function "<<endl;
   //call thread by object for member function,
   //object is passed by value

    Suggest sObj;
    cout<<"Object PASSED-BY-VALUE "<<endl;
    sObj.displayName();

    std::thread objThrd(&Suggest::updateName,sObj,"Value - Suggestion");
    objThrd.join();
    sObj.displayName();

    //object is passed by reference
    cout<<endl<<"Object PASSED-BY-REFERENCE "<<endl;
    Suggest sObjNew;
    sObjNew.displayName();

    std::thread objThrd1(&Suggest::updateName,&sObjNew,"Reference - Suggestion");
    objThrd1.join();
    sObjNew.displayName();

    //object is passed by pointer
    cout<<endl<<"Object PASSED-BY-POINTER "<<endl;
    Suggest* ptrObj=new Suggest;
    ptrObj->displayName();

    std::thread objThrd2(&Suggest::updateName,ptrObj,"Pointer - Suggestion");
    objThrd2.join();
    ptrObj->displayName();
    
    return 0;
}

 

Compile: g++ classFunctions.cpp -o  classFunctions -lpthread

Output: $ ./classFunctions


Static Function Call :: without &
Static Function Call :: with &

Call Member Function

Object PASSED-BY-VALUE

Name Tech
Name Tech

Object PASSED-BY-REFERENCE

Name Tech
Name Reference - Suggestion

Object PASSED-BY-POINTER

Name Tech
Name Pointer - Suggestion



PREV:: How to Call function with Reference Variable, 
Default Argument and Pointer Variable from thread.


Your Comments /Suggestions & Questions are always welcome. 

We would like to help you with best of our knowledge.

So feel free to put Questions

No comments:

Post a Comment