public void Run() { var manager1 = MemoryResourceManager.GetMemoryResourceManager(); var manager2 = MemoryResourceManager.GetMemoryResourceManager(); Console.WriteLine($"对象1 2是否为同一对象{manager1==manager2}"); Console.WriteLine("---------多线程测试----------"); //多线程状态下 TaskFactory taskFactory = new TaskFactory(); List <Task> tasks = new List <Task>(); for (int i = 0; i < 10; i++) { tasks.Add(taskFactory.StartNew(() => { Thread.CurrentThread.IsBackground = true; var propManager = MemoryResourceManagerProp.MemoryResourceManager; var lockManager = MemoryResourceManagerLock.GetMemoryResourceManager(); var lazyManager = MemoryResourceManagerLazy.GetMemoryResourceManager(); Console.WriteLine($"懒版本剩余内存{lazyManager.GetLeftMemory()}"); Console.WriteLine($"属性版本剩余内存{propManager.GetLeftMemory()}"); })); } var propManager = MemoryResourceManagerProp.MemoryResourceManager; Console.WriteLine($"属性版本剩余内存{propManager.GetLeftMemory()}"); var lazyManager = MemoryResourceManagerLazy.GetMemoryResourceManager(); Console.WriteLine($"懒版本剩余内存{lazyManager.GetLeftMemory()}"); Console.WriteLine("分析: 由于懒版本没有实现线程安全 另外我还没搞懂多线程(完)"); }
public static MemoryResourceManager GetMemoryResourceManager() { if (manager is null) { manager = new MemoryResourceManager(); } return(manager); }