Singleton and singleton)
1. Use Cases
Stackorverflow
- Controls concurrent access to a shared resource.
- Access to the resource will be requested from multiple, disparate parts of the system.
- There can be only one object.
- From (http://stackoverflow.com/questions/228164/on-design-patterns-when-to-use-the-singleton)
2. Simple Mode
Public class BaseSingle
{
Public void Method ()
{
Console. WriteLine ("{1}. Method: {0}", this. GetHashCode (), this. GetType (). ToString ());
}
}
Public class UnsafeSingle: BaseSingle
{
Private static UnsafeSingle _ single;
Public static UnsafeSingle UnsafeSingleInstatce ()
{
If (null = _ single)
_ Single = new UnsafeSingle ();
Return _ single;
}
Private UnsafeSingle ()
{
Console. WriteLine (DateTime. Now. ToString () + ": constructor! ");
}
}
Disadvantage: when an object is not created, multiple threads simultaneously access not one returned object;
The test code is as follows:
Internal delegate void InstanceFun ();
Public void GetInstatnce ()
{
UnsafeSingle. UnsafeSingleInstatce (). Method ();
}
Public void MutilThreadTest (InstanceFun instanceFun)
{
Var started = DateTime. Now;
Thread [] threads = new Thread [1, 100];
For (var index = 0; index <100; index ++)
{
Thread thread = new Thread (new ThreadStart (instanceFun ));
Threads [index] = thread;
}
Foreach (var thread in threads)
{
Thread. Start ();
}
Console. WriteLine ("Running Duration: {0}; test only", (DateTime. Now-started). Milliseconds );
}
Test results:
DesignPattern. UnsafeSingle. Method: 45338574
DesignPattern. UnsafeSingle. Method: 30944461
DesignPattern. UnsafeSingle. Method: 62452338
DesignPattern. UnsafeSingle. Method: 43921088
DesignPattern. UnsafeSingle. Method: 18573725
DesignPattern. UnsafeSingle. Method: 8935080
DesignPattern. UnsafeSingle. Method: 48823647
DesignPattern. UnsafeSingle. Method: 28613802
DesignPattern. UnsafeSingle. Method: 40642054
DesignPattern. UnsafeSingle. Method: 52962918
DesignPattern. UnsafeSingle. Method: 29095347
DesignPattern. UnsafeSingle. Method: 62694277
DesignPattern. UnsafeSingle. Method: 54643837
DesignPattern. UnsafeSingle. Method: 36302867
DesignPattern. UnsafeSingle. Method: 49913678
DesignPattern. UnsafeSingle. Method: 52482287
DesignPattern. UnsafeSingle. Method: 41829035
DesignPattern. UnsafeSingle. Method: 57978397
DesignPattern. UnsafeSingle. Method: 13456355
DesignPattern. UnsafeSingle. Method: 23736788
DesignPattern. UnsafeSingle. Method: 42195492
DesignPattern. UnsafeSingle. Method: 28113429
DesignPattern. UnsafeSingle. Method: 2875151
DesignPattern. UnsafeSingle. Method: 56858914
DesignPattern. UnsafeSingle. Method: 2735313
DesignPattern. UnsafeSingle. Method: 50717245
DesignPattern. UnsafeSingle. Method: 30697644
DesignPattern. UnsafeSingle. Method: 47515266
DesignPattern. UnsafeSingle. Method: 30183720
DesignPattern. UnsafeSingle. Method: 65195544
DesignPattern. UnsafeSingle. Method: 22695823
DesignPattern. UnsafeSingle. Method: 8561069
DesignPattern. UnsafeSingle. Method: 33135541
DesignPattern. UnsafeSingle. Method: 17719913
DesignPattern. UnsafeSingle. Method: 32493892
DesignPattern. UnsafeSingle. Method: 57339132
DesignPattern. UnsafeSingle. Method: 38516275
DesignPattern. UnsafeSingle. Method: 33858004
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
DesignPattern. UnsafeSingle. Method: 58042889
Run Duration: 115
DesignPattern. UnsafeSingle. Method: 58042889
Subsequent Updates