zoukankan      html  css  js  c++  java
  • 生产者消费者模式

    简介:在一个场景中,可能由一个模块来负责生产数据,另一个模块来消费。
    这里用一个非常简单的程序来进行模拟这种场景。下面的这个图片是界面

    在第一个文本框中填入数据后,点击“生产数据”按扭,数据就生产完了,然后另一个线程不断地去数据池中查看有没有新的数据,如果有就消费掉。
    下面看后台的代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    
    namespace 生产都消费者
    {
        public partial class Form1 : Form
        {
            public List<String> list = new List<string>();
            delegate void DelThread(string str);
            DelThread myDelThread;
    
            public Form1()
            {
                InitializeComponent();
                myDelThread = new DelThread(ShowString);
                Thread th = new Thread(XiaoFei);
                th.IsBackground = true;
                th.Start();
    
            }
    
            /// <summary>
            /// 生产数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                list.Add(textBox1.Text);
            }
    
            /// <summary>
            /// 另一个线程不断地去查看是否有新的数据产生
            /// </summary>
            private void XiaoFei()
            {
                while (true)
                {
                    foreach (string s in list.ToArray())
                    {
                        
                        textBox2.Invoke(myDelThread,s);
                    }
    
                    Thread.Sleep(3000);
                }
            }
    
            /// <summary>
            /// 把消费掉的数据显示到第二个文本框,并且从list中移除。
            /// </summary>
            /// <param name="str"></param>
            private void ShowString(string str)
            {
                textBox2.Text += str + "\r\n";
                list.Remove(str);
            }
            
        }
    }
  • 相关阅读:
    JAVA代码格式 Google-java-format VS AlibabaP3C
    推荐Java代码规范的几个插件
    muduo 库解析之六:Exception
    muduo 库解析之五:CurrentThread
    muduo 库解析之二:TimeStamp
    muduo 库解析之一:Copyable 和 NonCopyable
    YUV
    Windows 下 ffmpeg 的安装和测试
    QImage 与 Mat 转换时图像倾斜
    qBreakpad
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/2733898.html
Copyright © 2011-2022 走看看