• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# ConcurrentStack类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ConcurrentStack的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentStack类的具体用法?C# ConcurrentStack怎么用?C# ConcurrentStack使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ConcurrentStack类属于命名空间,在下文中一共展示了ConcurrentStack类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ExclusiveConnectionStrategy

 /// <summary>
 ///   Initializes the strategy with the specified nodes and cluster configuration
 /// </summary>
 /// <param name="nodes"> The nodes. </param>
 /// <param name="config"> The config. </param>
 public ExclusiveConnectionStrategy(Ring nodes, ClusterConfig config)
 {
     _nodes = nodes;
     _config = config;
     _connections = new ConcurrentStack<Connection>();
     _rndGen = new Random((int)DateTime.Now.Ticks);
 }
开发者ID:priyaparul,项目名称:CqlSharp,代码行数:12,代码来源:ExclusiveConnectionStrategy.cs


示例2: Main

        static void Main(string[] args)
        {
            //Stack - Pilha (LIFO) 
            ConcurrentStack<int> stack = new ConcurrentStack<int>();
            //Adiciona um item na pilha
            stack.Push(42);

            int result;
     
            //metodo trypop retorna o ultimo item a ser adicionado na lista, caso não tenha mais item ele não dar por que ele "tenta(try)" pega um item
            //quando usar o metodo trypop o item é removido da coleção
            if (stack.TryPop(out result))
            {
                Console.WriteLine("Popped: {0}", result);
            }
            if (stack.TryPop(out result))
            {
                Console.WriteLine("Popped: {0}", result);
            }

            stack.PushRange(new int[] { 1, 2, 3 });

            int[] values = new int[2];
            //metod retorna uma coleção de itens da pilha
            stack.TryPopRange(values);

            foreach (var item in values)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();
        }
开发者ID:Willamar,项目名称:ExamRef-70-483,代码行数:33,代码来源:Program.cs


示例3: FileHistoryService

 public FileHistoryService()
 {
     _storage = "recent.dat";
     _basePath = Path.GetDirectoryName(typeof(FileHistoryService).Assembly.Location);
     _container = new ConcurrentStack<string>();
     //InitializeFromFile();
 }
开发者ID:OleksandrKulchytskyi,项目名称:MyFirstMEF,代码行数:7,代码来源:IFileHistoryService.cs


示例4: SocketSniffer

        public SocketSniffer(NetworkInterfaceInfo nic, Filters<IPPacket> filters, IOutput output)
        {
            this.outputQueue = new BlockingCollection<TimestampedData>();
            this.filters = filters;
            this.output = output;

            this.bufferManager = new BufferManager(BUFFER_SIZE, MAX_RECEIVE);
            this.receivePool = new ConcurrentStack<SocketAsyncEventArgs>();
            var endPoint = new IPEndPoint(nic.IPAddress, 0);

            // IPv4
            this.socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
            this.socket.Bind(endPoint);
            this.socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);

            // Enter promiscuous mode
            try
            {
                this.socket.IOControl(IOControlCode.ReceiveAll, BitConverter.GetBytes(1), new byte[4]);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to enter promiscuous mode: {0}", ex);
                throw;
            }
        }
开发者ID:cocowalla,项目名称:Snifter,代码行数:26,代码来源:SocketSniffer.cs


示例5: Should_Succeed_With_Multiple_Rpc_Calls_At_The_Same_Time

		public async Task Should_Succeed_With_Multiple_Rpc_Calls_At_The_Same_Time()
		{
			/* Setup */
			var payloads = new List<Guid> { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() };
			var uniqueResponse = new ConcurrentStack<Guid>(payloads);
			var requester = BusClientFactory.CreateDefault();
			var responder = BusClientFactory.CreateDefault();
			responder.RespondAsync<BasicRequest, BasicResponse>((req, i) =>
			{
				Guid payload;
				if (!uniqueResponse.TryPop(out payload))
				{
					Assert.True(false, "No entities in stack. Try purgin the response queue.");
				};
				return Task.FromResult(new BasicResponse { Payload = payload });
			});

			/* Test */
			var first = requester.RequestAsync<BasicRequest, BasicResponse>(new BasicRequest { Number = 1 });
			var second = requester.RequestAsync<BasicRequest, BasicResponse>(new BasicRequest { Number = 2 });
			var third = requester.RequestAsync<BasicRequest, BasicResponse>(new BasicRequest { Number = 3 });
			Task.WaitAll(first, second, third);

			/* Assert */
			Assert.Contains(first.Result.Payload, payloads);
			Assert.Contains(second.Result.Payload, payloads);
			Assert.Contains(third.Result.Payload, payloads);
			Assert.NotEqual(first.Result.Payload, second.Result.Payload);
			Assert.NotEqual(second.Result.Payload, third.Result.Payload);
			Assert.NotEqual(first.Result.Payload, third.Result.Payload);
		}
开发者ID:futzy314,项目名称:RawRabbit,代码行数:31,代码来源:RpcTest.cs


示例6: verify_bahaviour_for_concurrent_access_under_identical_keys

        public void verify_bahaviour_for_concurrent_access_under_identical_keys()
        {
            var keys = new[] {"a", "a"};
            var counter = new ConcurrentStack<int>();
            var storage = new ConcurrentStack<TestItem>();

            // first run
            var threads = MakeThreads(keys);
            threads.ForEach(t => t.Start(new object[] {storage, counter}));
            threads.ForEach(t => t.Join());

            Assert.Equal(1, counter.Count);
            Assert.Equal(2, storage.Count);
            var a = storage.First();
            Assert.Same(storage.First(), storage.Last());

            // cleanups and second run
            storage.Clear();
            counter.Clear();

            threads = MakeThreads(keys);
            threads.ForEach(t => t.Start(new object[] {storage, counter}));
            threads.ForEach(t => t.Join());

            Assert.Equal(0, counter.Count);
            Assert.Equal(2, storage.Count);
            var aa = storage.First();
            Assert.Same(storage.First(), storage.Last());
            Assert.Same(a, aa);
        }
开发者ID:jwaliszko,项目名称:ExpressiveAnnotations,代码行数:30,代码来源:ProcessStorageTest.cs


示例7: ConnectionWorkersPool

        public ConnectionWorkersPool(
            uint numbersOfBuffers, uint buffersSize, Action<object, SocketAsyncEventArgs> ioCompleted, 
            IRequestProcessorFactory requestProcessorFactory)
        {
            _buffersSize = buffersSize;
            _numbersOfBuffers = numbersOfBuffers;
            _connectionWorkers = new ConcurrentStack<ConnectionWorker>();

            for (var i = 0; i < numbersOfBuffers; i++)
            {
                var buffer = new byte[buffersSize];
                for (var j = 0; j < buffer.Length; j++)
                {
                    buffer[j] = (byte)j;
                }
                var connectionWorker = new ConnectionWorker
                {
                    RequestProcessor = requestProcessorFactory.GetRequestProcessor()
                };
                var readWriteAsync = new SocketAsyncEventArgs {UserToken = connectionWorker};
                connectionWorker.SocketAsyncEventArgs = readWriteAsync;
                readWriteAsync.Completed += new EventHandler<SocketAsyncEventArgs>(ioCompleted);
                _connectionWorkers.Push(connectionWorker);
            }
        }
开发者ID:vlindos,项目名称:Vlindos,代码行数:25,代码来源:ConnectionWorkersPool.cs


示例8: TestMultiplex

        static void TestMultiplex() 
        {
            counter = 0;
            ThreadMultiplex multiplex = new ThreadMultiplex(100);
            Random exec = new Random();
            Thread[] threadArray = new Thread[1000];
            ConcurrentStack<int> answer = new ConcurrentStack<int>();
            for (int i = 0; i < 1000; i++) 
            {
                int temp = -1;
                threadArray[i] = new Thread(
                        ()=>{
                            multiplex.Enter();
                            Thread.Sleep(exec.Next(576));
                            temp = ++counter;
                            multiplex.Release();
                            Thread.Sleep(exec.Next(146));
                            answer.Push(temp);       
                        }
                    );
                threadArray[i].Start();
                //Console.WriteLine(temp);
            }

            foreach (var t in threadArray) 
            {
                t.Join();
            }

            foreach(var t in answer)
            {
                Console.WriteLine(t);
            }
        }
开发者ID:edwardt,项目名称:KeyConcepts,代码行数:34,代码来源:Program.cs


示例9: verify_bahaviour_for_concurrent_access_under_different_keys

        public void verify_bahaviour_for_concurrent_access_under_different_keys()
        {
            var keys = new[] {"a", "b"};
            var counter = new ConcurrentStack<int>(); // value factory threads
            var storage = new ConcurrentStack<TestItem>(); // cached items

            // first run
            var threads = MakeThreads(keys);
            threads.ForEach(t => t.Start(new object[] {storage, counter}));
            threads.ForEach(t => t.Join());

            Assert.Equal(2, counter.Count);
            Assert.Equal(2, storage.Count);
            Assert.NotSame(storage.First(), storage.Last());
            var a = storage.FirstOrDefault(x => x.Id == "a");
            var b = storage.FirstOrDefault(x => x.Id == "b");

            // cleanups and second run
            storage.Clear();
            counter.Clear();

            threads = MakeThreads(keys);
            threads.ForEach(t => t.Start(new object[] {storage, counter}));
            threads.ForEach(t => t.Join());

            Assert.Equal(0, counter.Count);
            Assert.Equal(2, storage.Count);
            Assert.NotSame(storage.First(), storage.Last());
            var aa = storage.FirstOrDefault(x => x.Id == "a");
            var bb = storage.FirstOrDefault(x => x.Id == "b");
            Assert.Same(a, aa);
            Assert.Same(b, bb);
        }
开发者ID:jwaliszko,项目名称:ExpressiveAnnotations,代码行数:33,代码来源:ProcessStorageTest.cs


示例10: TestBasicScenarios

        public static void TestBasicScenarios()
        {
            ConcurrentStack<int> cs = new ConcurrentStack<int>();
            cs.Push(1);

            Task[] tks = new Task[2];
            tks[0] = Task.Run(() =>
            {
                cs.Push(2);
                cs.Push(3);
                cs.Push(4);
            });

            tks[1] = Task.Run(() =>
            {
                int item1, item2;
                var ret1 = cs.TryPop(out item1);
                // at least one item
                Assert.True(ret1);
                var ret2 = cs.TryPop(out item2);
                // two item
                if (ret2)
                {
                    Assert.True(item1 > item2, String.Format("{0} should greater than {1}", item1, item2));
                }
                else // one item
                {
                    Assert.Equal(1, item1);
                }
            });

            Task.WaitAll(tks);
        }
开发者ID:gitter-badger,项目名称:corefx,代码行数:33,代码来源:ConcurrentStackTests.cs


示例11: generatePaths

        //simulate sim;
        //simulateHist simHist;
        public ConcurrentBag<double> generatePaths(double initialPrice, int numberOfPaths, double timeToExpiry)
        {
            ConcurrentBag<double> toReturn = new ConcurrentBag<double>{};
            //var indices                    = Enumerable.Range(0, numberOfPaths);

            var rnd = new Random(42);
            ConcurrentStack<int> seeds = new ConcurrentStack<int> {};
            for (int i = 0; i < numberOfPaths; ++i)
                seeds.Push(rnd.Next(1, numberOfPaths - 1));

            int steps = Convert.ToInt32 (Math.Floor(timeToExpiry / bm.deltaT));

            Parallel.ForEach(seeds,
                             //new ParallelOptions { MaxDegreeOfParallelism = 2 },
                             seed =>
                {
                    Thread.Sleep(1);

                    simulate mySim = new simulate(simulator.simulate);

                    double res = new double();
                    res = mySim(steps, initialPrice, seed, bm);

                    toReturn.Add(res);
                }
            );

            return toReturn;
        }
开发者ID:marksalako,项目名称:BrownianMCSim,代码行数:31,代码来源:MCGenerator.cs


示例12: PushTryPop

        public void PushTryPop(int producerThreads, int consumerThreads)
        {
            var stack = new ConcurrentStack<int>();
            var startEvent = new ManualResetEventSlim(false);
            var finished = 0;
            var stop = false;
            var producerTasks = Enumerable.Range(0, producerThreads).Select(i => Task.Factory.StartNew(() =>
                {
                    var count = iterations/producerThreads;
                    startEvent.Wait();
                    for (var j = 0; j < count; j++)
                        stack.Push(0);
                    Interlocked.Increment(ref finished);
                    if (finished >= producerThreads) stop = true;
                }, TaskCreationOptions.LongRunning)).ToArray();
            var consumerTasks = Enumerable.Range(0, consumerThreads).Select(i => Task.Factory.StartNew(() =>
                {
                    int num;
                    startEvent.Wait();
                    while (!stop) stack.TryPop(out num);
                }, TaskCreationOptions.LongRunning)).ToArray();

            var stopwatch = Stopwatch.StartNew();
            startEvent.Set();
            stop = true;
            Task.WaitAll(producerTasks);
            Task.WaitAll(consumerTasks);
            stopwatch.StopAndLog(iterations);
        }
开发者ID:hanswolff,项目名称:benchmark,代码行数:29,代码来源:ConcurrentStackTest.cs


示例13: BufferManager

 public BufferManager(int totalBytes, int totalBufferBytesInEachSaeaObject)
 {
     _totalBytesInBufferBlock = totalBytes;
     _currentIndex = 0;
     _bufferBytesAllocatedForEachSaea = totalBufferBytesInEachSaeaObject;
     _freeIndexPool = new ConcurrentStack<int>();
 }
开发者ID:Microshaoft,项目名称:Microshaoft.Common.Utilities.Net.4x,代码行数:7,代码来源:BufferManager.cs


示例14: Setup

		public void Setup()
		{
			stack = new ConcurrentStack<int>();
			for (int i = 0; i < 10; i++) {
				stack.Push(i);
			}
		}
开发者ID:Profit0004,项目名称:mono,代码行数:7,代码来源:ConcurrentStackTests.cs


示例15: Main

        static void Main(string[] args)
        {
            ConcurrentStack<int> stack = new ConcurrentStack<int>();

            stack.Push(42);

            int result;
            if (stack.TryPop(out result))
            {
                Console.WriteLine(result);
            }

            stack.PushRange(new int[] { 1, 2, 3 });

            int[] values = new int[2];
            stack.TryPopRange(values);

            foreach (var i in values)
            {
                Console.WriteLine(i);
            }

            Console.Write("Press a key to exit");
            Console.ReadKey();
        }
开发者ID:jbijoux,项目名称:Exam70_483,代码行数:25,代码来源:Program.cs


示例16: DemoConcurrentStack

        private static void DemoConcurrentStack()
        {
            Console.WriteLine("Demo Concurrent Stack ----------------------");
            var shirts = new ConcurrentStack<string>();
            shirts.Push("Pluralsight");
            shirts.Push("WordPress");
            shirts.Push("Code School");

            Console.WriteLine("After enqueuing, count = " + shirts.Count);

            string item1; //= shirts.Dequeue();
            bool success = shirts.TryPop(out item1);
            if (success)
                Console.WriteLine("\r\nRemoving " + item1);
            else
                Console.WriteLine("queue was empty");

            string item2; //= shirts.Peek();
            success = shirts.TryPeek(out item2);
            if (success)
                Console.WriteLine("Peeking   " + item2);
            else
                Console.WriteLine("queue was empty");

            Console.WriteLine("\r\nEnumerating:");
            foreach (string item in shirts)
                Console.WriteLine(item);

            Console.WriteLine("\r\nAfter enumerating, count = " + shirts.Count);
        }
开发者ID:Jac21,项目名称:GistsCollection,代码行数:30,代码来源:Program.cs


示例17: ConcurrentStackExampleRange

		public int ConcurrentStackExampleRange ()
		{
			var stack = new ConcurrentStack<int> (); 

			stack.PushRange (new int[] { 1, 2, 3 }); 
		
			return stack.TryPopRange (new int[2]); 
		}
开发者ID:caloggins,项目名称:DOT-NET-on-Linux,代码行数:8,代码来源:ConcurrentStackExample.cs


示例18: Setup

 public void Setup()
 {
     trueVaultClient = new TrueVaultClient(TestConfig.Instance.TrueVaultApiKey);
     documentSuccessResponses = new ConcurrentStack<DocumentSaveSuccessResponse>();
     schemaSuccessResponses = new ConcurrentStack<SchemaSaveSuccessResponse>();
     testVaultId = Guid.Parse(TestConfig.Instance.TrueVaultTestVault);
     Mapper.AssertConfigurationIsValid();
 }
开发者ID:hsrob,项目名称:TrueVault.Net,代码行数:8,代码来源:TrueVaultClientTest.cs


示例19: SocketAsyncEventArgsFactory

		private SocketAsyncEventArgsFactory(int chunkSize)
		{
			this.UpdateLock = new object();
			this.chunkSize = chunkSize;

			this.factories = new ConcurrentStack<BufferFactory>();
			this.knownEventArgs = new ConcurrentDictionary<SocketAsyncEventArgs, Tuple<BufferFactory, ArraySegment<byte>>>();
		}
开发者ID:adamhathcock,项目名称:EnyimMemcached2,代码行数:8,代码来源:SocketAsyncEventArgsPool.cs


示例20: ProductsController

 static ProductsController()
 {
     _products = new ConcurrentStack<Product>(new List<Product>
     {
         new Product { Name = "Peanut Butter", Price = 3.99m },
         new Product { Name = "Jelly", Price = 4.99m }
     });
 }
开发者ID:cadwinte,项目名称:July6Troop2015,代码行数:8,代码来源:ProductsController.cs



注:本文中的ConcurrentStack类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Condition类代码示例发布时间:2022-05-24
下一篇:
C# ConcurrentSet类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap