コード例 #1
0
        private ActorConcurrencyLock CreateAndInitializeReentrancyGuard(ActorBase owner, ActorReentrancyMode mode)
        {
            var settings = new ActorConcurrencySettings()
            {
                ReentrancyMode = mode
            };
            var guard = new ActorConcurrencyLock(owner, settings);

            return(guard);
        }
コード例 #2
0
        private static void RunTest(ActorConcurrencyLock guard)
        {
            var test = Guid.NewGuid().ToString();

            guard.Acquire(test, null, CancellationToken.None).Wait();
            guard.Test_CurrentCount.Should().Be(1);
            _currentContext = test;
            for (var i = 0; i < 10; i++)
            {
                var testContext = test + ":" + Guid.NewGuid().ToString();
                guard.Acquire(testContext, null, CancellationToken.None).Wait();
                testContext.Should().StartWith(_currentContext, "Call context Prefix Matching ");
                guard.ReleaseContext(testContext).Wait();
            }

            guard.Test_CurrentCount.Should().Be(1);
            guard.ReleaseContext(test).Wait();
        }