public void ParallelHashSetDuplicate()
        {
            var ownerId = Guid.NewGuid().ToString("N");

            DotnetSpider.Scheduler.Component.HashSetDuplicateRemover scheduler = new DotnetSpider.Scheduler.Component.HashSetDuplicateRemover();
            var r1 = new Request("http://www.a.com")
            {
                OwnerId = ownerId
            };

            r1.ComputeHash();
            bool isDuplicate = scheduler.IsDuplicate(r1);

            Assert.False(isDuplicate);
            Parallel.For(0, 1000, new ParallelOptions {
                MaxDegreeOfParallelism = 30
            }, i =>
            {
                var r = new Request("http://www.a.com")
                {
                    OwnerId = ownerId
                };
                r.ComputeHash();
                isDuplicate = scheduler.IsDuplicate(r);
                Assert.True(isDuplicate);
            });
        }
        public void HashSetDuplicate()
        {
            DotnetSpider.Scheduler.Component.HashSetDuplicateRemover scheduler = new DotnetSpider.Scheduler.Component.HashSetDuplicateRemover();

            var ownerId = Guid.NewGuid().ToString("N");
            var r1      = new Request("http://www.a.com")
            {
                OwnerId = ownerId
            };

            r1.ComputeHash();
            bool isDuplicate = scheduler.IsDuplicate(r1);

            Assert.False(isDuplicate);
            var r2 = new Request("http://www.a.com")
            {
                OwnerId = ownerId
            };

            r2.ComputeHash();
            isDuplicate = scheduler.IsDuplicate(r2);
            Assert.True(isDuplicate);
            var r3 = new Request("http://www.b.com")
            {
                OwnerId = ownerId
            };

            r3.ComputeHash();
            isDuplicate = scheduler.IsDuplicate(r3);
            Assert.False(isDuplicate);
            var r4 = new Request("http://www.b.com")
            {
                OwnerId = ownerId
            };

            r4.ComputeHash();

            isDuplicate = scheduler.IsDuplicate(r4);
            Assert.True(isDuplicate);
        }