Esempio n. 1
0
        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("分析: 由于懒版本没有实现线程安全 另外我还没搞懂多线程(完)");
        }
Esempio n. 2
0
 public static MemoryResourceManager GetMemoryResourceManager()
 {
     if (manager is null)
     {
         manager = new MemoryResourceManager();
     }
     return(manager);
 }