zoukankan      html  css  js  c++  java
  • 六 c# 多线程研究 线程间通信

    using System;
    using System.Text;
    using System.Threading;

    namespace ThreadTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Student student = new Student();
                new Thread(new ThreadStart(new Thread1(student).run)).Start();//添加信息
                new Thread(new ThreadStart(new Thread2(student).run)).Start();//读取信息
            }
        }

        /// <summary>
        /// 向Student类加添加信息
        /// </summary>
        public class Thread1
        {
            private Student student;
            public Thread1(Student student)
            {
                this.student = student;
            }
            public void run()
            {
                int i = 0;
                while (true)
                {
                    if (i == 0)
                        student.Add("jxncwzb", 23);
                    else
                        student.Add("jxncwzb++", 22);
                    i = (i + 1) % 2;
                }
            }
        }

        /// <summary>
        /// 读取Thread1干才添加的信息
        /// </summary>
        public class Thread2
        {
            private Student student;
            public Thread2(Student student)
            {
                this.student = student;
            }
            public void run()
            {
                while (true)
                {
                    student.GetInfo();
                }
            }
        }

        public class Student
        {
            private string name;
            private int age;
            private bool isRun = false;
            public void Add(string name, int age)
            {
                Monitor.Enter(this);
                if (isRun)
                    Monitor.Wait(this);
                this.name = name;
                //Thread.Sleep(10);
                this.age = age;
                this.isRun = true;
                Monitor.Pulse(this);
                Monitor.Exit(this);
            }

            public void GetInfo()
            {
                Monitor.Enter(this);
                if (!isRun)
                    Monitor.Wait(this);
                Console.Write("姓名:" + name);
                Console.WriteLine("&年龄:" + age.ToString());
                this.isRun = false;
                Monitor.Pulse(this);
                Monitor.Exit(this);
            }

        }
    }

  • 相关阅读:
    光与爱的世界
    [家里训练20_02_28]ABC
    [爬虫]美术作业,爬虫和百度图片
    [机器学习]第六、七周记录
    数据类型和对象
    设备对象
    进程、内存线程
    创建符号链接
    SCM管理器
    Nt内核函数原型and中文
  • 原文地址:https://www.cnblogs.com/pricks/p/1590546.html
Copyright © 2011-2022 走看看