zoukankan      html  css  js  c++  java
  • 生产者,消费者线程

    代码

    using System;
    using System.Threading;
    using System.Collections.Generic;

    namespace TestThreadDemos
    {
        
    /// <summary>
        
    /// 生产者消费者队列
        
    /// </summary>
        public class ProducerConsumerQueue : IDisposable
        {
            
    private Thread worker;
            
    private EventWaitHandle wh;
            
    private Queue<string> workQueue;
            
    private object locker;
            
    public ProducerConsumerQueue()
            {
                wh 
    = new AutoResetEvent(false);
                workQueue 
    = new Queue<string>();
                locker 
    = new object();
                worker 
    = new Thread(Work);
                worker.Start();
            }

            
    private void Work()
            {
                
    while (true)
                {
                    
    string outTask = null;
                    
    lock (locker)
                        
    if (workQueue.Count > 0)
                            outTask 
    = workQueue.Dequeue();
                    
    if (outTask == nullreturn;
                    
    if (outTask != null)
                    {
                        Console.WriteLine(
    "输出的任务" + outTask);
                        Thread.Sleep(
    5000);
                    }
                    
    else
                        wh.WaitOne();
                }
            }

            
    public void Dispose()
            {
                EnWorkQueue(
    null);
                worker.Join();
                wh.Close();
            }

            
    public void EnWorkQueue(string task)
            {
                
    if (workQueue != null)
                {
                    
    lock (locker)
                        workQueue.Enqueue(task);
                    wh.Set();
                }
            }
        }
    }
  • 相关阅读:
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    AcWing 1049. 大盗阿福 状态机模型dp
    AcWing 11. 背包问题求方案数
    AcWing 10. 有依赖的背包问题
    AcWing 7. 混合背包问题
    AcWing 532. 货币系统
    2018-2019 ACM-ICPC, Asia East Continent Final L Eventual … Journey
    AcWing 487. 金明的预算方案
  • 原文地址:https://www.cnblogs.com/csharponworking/p/1643381.html
Copyright © 2011-2022 走看看