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
==============================================================================
#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
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started