Question: Explain why the code below is not threaded safely. Note how the instance of a Leader class is instantiated. In the main method, create another

Explain why the code below is not threaded safely. Note how the instance of a Leader class is instantiated. In the main method, create another Leader named elected and have elected give a speech. Make your program thread-safe.

I've seen examples of this with but I'm on Mac OSX. Anything helps. Thanks in advance.

==============================================================================

#include

#include

#include

using namespace std;

class Leader

{

private:

static Leader * _instance;

Leader()

{

cout << "New leader elected" << endl;

}

public:

static Leader * getInstance()

{

if (_instance == NULL)

{

_instance = new Leader;

}

return _instance;

}

void giveSpeech()

{

cout << "Address the public" << endl;

}

};

Leader* Leader::_instance = NULL;

int main()

{

//leader *elected = new Leader(); lazy initialization

Leader::getInstance()->giveSpeech();

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!