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);
            }

        }
    }

  • 相关阅读:
    python 连接操作mysql数据库
    (转)postfix疯狂外发垃圾邮件之分析与解决
    ansible 常用方法
    用python2.7.9 写个小程序搜索某个目录下行有某关键字
    python获取文件扩展名的方法(转)
    ceph 池管理
    UVALive 5412 Street Directions
    UVALive 3231 Fair Share
    UVA 11478 Halum
    2015 Multi-University Training Contest 4 hdu 5338 ZZX and Permutations
  • 原文地址:https://www.cnblogs.com/pricks/p/1590546.html
Copyright © 2011-2022 走看看