求一个C#使用Queue的一个生产者多个消费者(多线程)的示例,谢谢! 50

一个生产者线程,每次读取文件一行加入到Queue里,文件读取完毕后,线程完毕。多个消费者线程,从Queue里取数据进行处理。如有Q聊最好,谢谢。... 一个生产者线程,每次读取文件一行加入到Queue里,文件读取完毕后,线程完毕。
多个消费者线程,从Queue里取数据进行处理。
如有Q聊最好,谢谢。
展开
 我来答
slam2012
2014-08-02 · 超过11用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:11.9万
展开全部
class queueThread
    {

        private object locker = new object();
        private Queue queue = new Queue();

        private bool isStart = false;
        public void Start()
        {
            if (isStart) return;
            isStart = true;
            //生产者
            var thread1 = new Thread(() => AddQueueWorker());
            thread1.Start();

            //消费者
            var thread2 = new Thread(() => GetQueueWorker());
            thread2.Start();
        }


        private void AddQueueWorker()
        {
            lock (locker)
            {
                var fileLine = File.OpenText(@"d:\\file.txt");
                var strLine = string.Empty;
                while ((strLine = fileLine.ReadLine()) != null)
                {
                    queue.Enqueue(strLine);
                }
            }
        }

        private void GetQueueWorker()
        {
            while (true)
            {
                lock (locker)
                {
                    if (queue.Count == 0)
                        break;

                    var obj = queue.Dequeue();
                    if (obj == null)
                        continue;

                    //obj 是获取的值,要做点什么?

                }
            }

            isStart = false;
        }
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappmLWLo11g6JeNA
推荐于2018-04-12 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:115万
展开全部

你看看,闲着瞎写的~~

兄弟都下了我的源码,不给点意见或者加分谁不过去吧

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式