public unsafe void Test_ArrayExtensions_Pointer()
        {
            SpinLock  spinLock = default;
            SpinLock *p        = &spinLock;

            int sum = 0;

            Parallel.For(0, 1000, i =>
            {
                for (int j = 0; j < 10; j++)
                {
                    using (SpinLockExtensions.Enter(p))
                    {
                        sum++;
                    }
                }
            });

            Assert.AreEqual(sum, 1000 * 10);
        }
        public void Test_ArrayExtensions_Ref()
        {
            var spinLockOwner = new SpinLockOwner();

            int sum = 0;

            Parallel.For(0, 1000, i =>
            {
                for (int j = 0; j < 10; j++)
                {
#if WINDOWS_UWP
                    using (SpinLockExtensions.Enter(spinLockOwner, ref spinLockOwner.Lock))
#else
                    using (spinLockOwner.Lock.Enter())
#endif
                    {
                        sum++;
                    }
                }
            });

            Assert.AreEqual(sum, 1000 * 10);
        }