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

        }
    }

  • 相关阅读:
    MySQL索引长度限制问题
    Mysql查询缓存碎片、缓存命中率及Nagios监控
    PHP多台服务器跨域SESSION共享
    php会话全揭秘
    深入PHP中慎用双等于(==)的详解
    php二进制安全的含义
    分表,分库算法
    php学习网站推荐
    在linux平台下,设置core dump文件属性(位置,大小,文件名等)
    常用Linux shell命令汇总
  • 原文地址:https://www.cnblogs.com/pricks/p/1590546.html
Copyright © 2011-2022 走看看