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();
                }
            }
        }
    }
  • 相关阅读:
    CSS3(4)---动画(animation)
    MDT 2010驱动管理新方法。
    windows 2012 试用180天
    Mac地址绑定的wifi
    用于主题检测的临时日志(b2d5c7b3-e3f6-4b0f-bfa4-a08e923eda9b
    samba4.1.9安装
    samba权限之easy举例说明--原创
    NFS性能优化
    工作组环境下管理windows.
    管理windows防火墙
  • 原文地址:https://www.cnblogs.com/csharponworking/p/1643381.html
Copyright © 2011-2022 走看看