Example #1
0
        public void SealAndReleaseAreThreadSafe()
        {
            var filterableDimension = new DimensionSet(new HashSet <Dimension> {
                new Dimension("thing")
            });

            using (
                var filterableBucket =
                    new DataBucket <InternalHitCount>(filterableDimension,
                                                      this.timestamp,
                                                      DefaultBucketTimeSpanTicks,
                                                      this.currentDirectory,
                                                      properties.MemoryStreamManager))
            {
                var allDims = new DimensionSpecification {
                    { "thing", "thing" }
                };
                Parallel.For(0, 10, (i) => filterableBucket.AddValue(allDims, i));

                Parallel.For(0, 100, (i) =>
                {
                    switch (i % 3)
                    {
                    case 0:
                        foreach (var item in filterableBucket.GetMatches(allDims))
                        {
                            Assert.IsNotNull(item);
                        }
                        break;

                    case 1:
                        filterableBucket.AddValue(allDims, 11);
                        break;

                    case 2:
                        filterableBucket.ReleaseData();
                        break;
                    }
                });
            }
        }
Example #2
0
        public void SealAndReleaseAreThreadSafe()
        {
            var filterableDimension = new DimensionSet(new HashSet<Dimension> { new Dimension("thing") });
            using (
                var filterableBucket =
                    new DataBucket<InternalHitCount>(filterableDimension,
                                                                                this.timestamp,
                                                                                DefaultBucketTimeSpanTicks,
                                                                                this.currentDirectory,
                                                                                properties.MemoryStreamManager))
            {


                var allDims = new DimensionSpecification {{"thing", "thing"}};
                Parallel.For(0, 10, (i) => filterableBucket.AddValue(allDims, i));

                Parallel.For(0, 100, (i) =>
                                     {
                                         switch (i % 3)
                                         {
                                         case 0:
                                             foreach (var item in filterableBucket.GetMatches(allDims))
                                             {
                                                 Assert.IsNotNull(item);
                                             }
                                             break;

                                         case 1:
                                             filterableBucket.AddValue(allDims, 11);
                                             break;

                                         case 2:
                                             filterableBucket.ReleaseData();
                                             break;
                                         }
                                     });
            }
        }