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();
                }
            }
        }
    }
  • 相关阅读:
    javascript对象Math和正则对象
    javascript的Date对象
    初识Python与条件判断
    数据降维_矩阵分析笔记
    数据可视化实战:如何给陈奕迅的歌曲做词云展示?
    数据采集实战:如何自动化运营微博?
    MySQL与Python交互
    27_MySQL数字函数(重点)
    26_ mysql数据操作语言:DELETE语句
    25_MySQL 数据操作语言:UPDATE语句
  • 原文地址:https://www.cnblogs.com/csharponworking/p/1643381.html
Copyright © 2011-2022 走看看