zoukankan      html  css  js  c++  java
  • C#的生产者和消费者 实例

    class Program
    {
        //写线程将数据写入myData
        static int myData = 100;

        //读写次数
        const int readWriteCount = 20;

        //false:初始时没有信号
        //static ManualResetEvent autoResetEvent = new ManualResetEvent(false);
        static AutoResetEvent autoResetEvent = new AutoResetEvent(false);
        static AutoResetEvent ReadautoResetEvent = new AutoResetEvent(false);
      static void Main(string[] args)
      {
        //开启一个读线程(子线程)
        Thread readerThread = new Thread(new ThreadStart(ReadThreadProc));
        readerThread.Name = "ReaderThread";
        readerThread.Start();

        for (int i = 1; i <= readWriteCount; i++)
        {

          Console.WriteLine("MainThread writing : {0}", i);

          //主(写)线程将数据写入
          myData = i;

          //主(写)线程发信号,说明值已写过了
          //即通知正在等待的线程有事件发生
          autoResetEvent.Set();

          ReadautoResetEvent.WaitOne();


          Thread.Sleep(0);
         }

        //终止线程
        readerThread.Abort();

        Console.ReadLine();
      }

      static void ReadThreadProc()
      {
          while (true)
          {
            ReadautoResetEvent.Set();
            //在数据被写入前,读线程等待(实际上是等待写线程发出数据写完的信号)
            autoResetEvent.WaitOne();
            Console.WriteLine("{0} reading : {1}", Thread.CurrentThread.Name, myData);
          }
      }

    }

  • 相关阅读:
    iOS 面向对象
    iOS 构建动态库
    iOS 单例
    iOS 操作系统架构
    iOS 编译过程原理(1)
    Category
    CoreText
    dyld
    block
    (CoreText框架)NSAttributedString 2
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14220632.html
Copyright © 2011-2022 走看看