Addison Wesley: Modern C++ Design: Generic Programming and Design Patterns Applied by By Andrei Alexandrescu
				
							
							
								
							
							
							Author:By Andrei Alexandrescu
							
							
							
							Language: eng
							
							
							
							Format: mobi
							
							
							
																				
							ISBN: 0201704315
							
							
							
							
							
							
							
							Publisher: Addison Wesley
							
							
							
							Published: 2011-10-03T15:23:26+00:00
							
							
							
							
							
							
Singleton& Singleton::Instance()
{
if (!pInstance_)
{
Lock guard(mutex_);
pInstance_ = new Singleton;
}
return *pInstance_;
}
Now the overhead is gone, but the race condition is back. The first thread passes the if test, but just when it is about to enter the synchronized portion of code, the OS scheduler interrupts it and passes control to the other thread. The second thread passes the if test itself (and to no one's surprise, finds a null pointer), enters the synchronized portion, and completes it. When the first thread is reactivated, it also enters the synchronized portion, but it's just too lateagain, two Singleton objects are constructed.
This seems like one of those brainteasers with no solution, but in fact there is a very simple and elegant one. It's called the Double-Checked Locking pattern.
The idea is simple: Check the condition, enter the synchronized code, and then check the condition again. By this time, rien ne va plusthe pointer is either initialized or null all right. The code that will help you to understand and savor the Double-Checked pattern follows. Indeed, there is beauty in computer engineering.
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Hello! Python by Anthony Briggs(10193)
The Mikado Method by Ola Ellnestam Daniel Brolund(10100)
OCA Java SE 8 Programmer I Certification Guide by Mala Gupta(10039)
Algorithms of the Intelligent Web by Haralambos Marmanis;Dmitry Babenko(8584)
Sass and Compass in Action by Wynn Netherland Nathan Weizenbaum Chris Eppstein Brandon Mathis(7964)
Grails in Action by Glen Smith Peter Ledbrook(7940)
Test-Driven iOS Development with Swift 4 by Dominik Hauser(7895)
The Well-Grounded Java Developer by Benjamin J. Evans Martijn Verburg(7836)
Windows APT Warfare by Sheng-Hao Ma(7618)
Layered Design for Ruby on Rails Applications by Vladimir Dementyev(7359)
Blueprints Visual Scripting for Unreal Engine 5 - Third Edition by Marcos Romero & Brenden Sewell(7263)
Secrets of the JavaScript Ninja by John Resig Bear Bibeault(6731)
Kotlin in Action by Dmitry Jemerov(5367)
Solidity Programming Essentials by Ritesh Modi(4451)
Hands-On Full-Stack Web Development with GraphQL and React by Sebastian Grebe(4400)
WordPress Plugin Development Cookbook by Yannick Lefebvre(4260)
Unity 3D Game Development by Anthony Davis & Travis Baptiste & Russell Craig & Ryan Stunkel(4171)
Functional Programming in JavaScript by Mantyla Dan(4160)
The Ultimate iOS Interview Playbook by Avi Tsadok(4146)