mercredi 31 mai 2017

Does wrapping a std::atomic_flag in a getter/setter void its "atomicity"?

Say I have a class that contains a std::atomic_flag as private member, exposed through a getter. Something like the following (pseudo-code):

class Thing
{
private:

    std::atomic_flag ready = ATOMIC_FLAG_INIT;

public:

    isReady()
    {
        return ready.test_and_set(); 
    }
} 

My naive question is: does querying the flag through a method turn it into a non-atomic operation, being a function call non-atomic (or is it?)? Should I make my ready flag a public member and querying it directly?

Aucun commentaire:

Enregistrer un commentaire