zoukankan      html  css  js  c++  java
  • c#多线程控制

      class Program
        {
            static  Thread SeekBookThread = new Thread(new ThreadStart(TestMutiThrd.SeekProc));
            static  Thread payMoneyThread = new Thread(new ThreadStart(TestMutiThrd.PayMoneyProc));
            static Thread getBookThread = new Thread(new ThreadStart(TestMutiThrd.GetBookProc));
            static void Main(string[] args)
            { 
            
                SeekBookThread.Name = "扫描线程";
                SeekBookThread.Start();
    
    
          
                payMoneyThread.Name = "付钱线程";
                payMoneyThread.Start();
    
    
            
                getBookThread.Name = "取书线程";
                getBookThread.Start();
    
    
                for (int i = 1; i <= TestMutiThrd.numIterations; i++)
                {
                    Console.WriteLine("买书线程:书本{0}", i);
                    TestMutiThrd.number = i;
                    //Signal that a value has been written.
                    TestMutiThrd.SekEvent.Set();//解锁扫描线程
                    TestMutiThrd.buyResetEvent.WaitOne();//等待买书所有线程执行结束,才能继续
                    Thread.Sleep(0);
                }
                Thread.Sleep(1000);
                Console.ReadLine();
                SeekBookThread.Abort();
                payMoneyThread.Abort();
                getBookThread.Abort();
            }
        }
    
    
        public class TestMutiThrd
        {
            public const int numIterations = 50;
            //买书
            public static AutoResetEvent buyResetEvent = new AutoResetEvent(false);
            //扫描
            public static AutoResetEvent SekEvent = new AutoResetEvent(false);
            //付钱
            public static AutoResetEvent PayEvent = new AutoResetEvent(false);
            //取书
            public static AutoResetEvent GetEvent = new AutoResetEvent(false);
            //付钱和取书
            public static ManualResetEvent PayGetEvent = new ManualResetEvent(false);
    
    
            public static ReaderWriterLock RWLock = new ReaderWriterLock();
            //static ManualResetEvent myResetEvent = new ManualResetEvent(false);
            //static ManualResetEvent ChangeEvent = new ManualResetEvent(false);
            public static int number; //这是关键资源
            public static TestMutiThrd OTestMutiThrd = new TestMutiThrd();
    
    
            public int NumIterations
            {
                get
                {
                    return numIterations;
                }
            }
    
    
            /// <summary>
            /// 扫描过程
            /// </summary>
            public static void SeekProc()
            {
                while (true) //(thread.ThreadState != ThreadState.Aborted)
                {
                    SekEvent.WaitOne();
                    //SekEvent.Reset();
                    Console.WriteLine("{0}:书本{1}", Thread.CurrentThread.Name, number);
                    Thread.Sleep(0);
                    PayEvent.Set();//解锁付款线程
                    //PayGetEvent.Set();//同时解锁付款和取书线程
                }
            }
    
    
            /// <summary>
            /// 付钱过程
            /// </summary>
            public static void PayMoneyProc()
            {
                while (true)
                {
                    PayEvent.WaitOne();
                    Console.WriteLine("{0}:书本{1}", Thread.CurrentThread.Name, number);
                    Thread.Sleep(10);
                    GetEvent.Set();//解锁取书线程
                }
            }
    
    
            /// <summary>
            /// 取书过程
            /// </summary>
            public static void GetBookProc()
            {
                while (true)
                {
                    GetEvent.WaitOne();         
                    Console.WriteLine("{0}:书本{1}", Thread.CurrentThread.Name, number);
                    Console.WriteLine("------------------------------------------");
                    Thread.Sleep(10);
                    buyResetEvent.Set();//解锁买书线程
                }
            }
        }
  • 相关阅读:
    论文Objects as Points的解读
    图像增强
    from __future__ import absolute_import作用
    python降级
    conda命令总是出现Solving environment: failed错误
    ResNet网络结构
    卷积与池化操作后特征图大小的计算
    vs2015安装包下载与安装教程
    每隔几秒检测进程是否挂了
    阿里云部署flask
  • 原文地址:https://www.cnblogs.com/weifeng123/p/10036513.html
Copyright © 2011-2022 走看看