• 大小: 635 Bytes
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-11
  • 语言: 其他
  • 标签: 线程同步  

资源简介

AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。

线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。

调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoResetEvent 将保持终止状态,直到一个正在等待的线程被释放,然后自动返回非终止状态。如果没有任何线程在等待,则状态将无限期地保持为终止状态

资源截图

代码片段和文件信息

using System;
using System.Threading;

namespace AutoResetEvent_Examples
{
    class MyMainClass
    {
        //Initially not signaled.
        const int numIterations = 100;
        static AutoResetEvent myResetEvent = new AutoResetEvent(false);
        static int number;

        static void Main()
        {
            //Create and start the reader thread.
            Thread myReaderThread = new Thread(new ThreadStart(MyReadThreadProc));
            myReaderThread.Name = “ReaderThread“;
            myReaderThread.Start();

            for (int i = 1; i <= numIterations; i++)
            {
                Console.WriteLine(“Writer thread writing value: {0}“ i);
                number = i;

                //Signal that a value has been written.
                myResetEvent.Set();

                //Give the Reader thread an opportunity to act.
                Thread.Sleep(0);
            }

            //Terminate the reader thread.
            myReaderThread.Abort();
        }

        static void MyReadThreadProc()
        {
            while (true)
            {
                //The value will not be read until the writer has written
                // at least once since the last read.
                myResetEvent.WaitOne();
                Console.WriteLine(“{0} reading value: {1}“ Thread.CurrentThread.Name number);
            }
        }
    }
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1433  2008-09-26 14:44  Program.cs

----------- ---------  ---------- -----  ----

                 1433                    1


评论

共有 条评论