`

AutoResetEvent笔记

    博客分类:
  • C#
 
阅读更多
using System;
using System.Threading;

namespace ThreadPoolTest
{
    class Program
    {
        //用false实例化时,asy为非终止状态,即可用状态。此时调用WaitOne()方法会阻塞等待线程
        static AutoResetEvent asy = new AutoResetEvent(false);
        static void Main(string[] args)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(Threadproc),"This is a test");
            Console.WriteLine("这是主线程!");
            //等待事件信号,当收到一个事件信号(等待句柄)时,执行下面代码。执行完后把asy的状态改成非终止状态,即可用状态。等待下一次收到事件信号(等待句柄)。这样确保每个等待句柄只有一个等待线程执行
            asy.WaitOne();
            Console.WriteLine("主线程退出!");
            Console.ReadLine();
        }
        //因为public delegate void WaitCallback(object state),所以回调方法必须有一个object参数
        static void Threadproc(object o)
        {
            string s = o as String;
            Console.WriteLine("这是线程池中的线程!");
            Console.WriteLine(s);
            //调用set()方法,通知等待线程已发生了一个事件,即有一个等待句柄可用。当前线程会通知等待线程,可以执行。此时asy为true(终止状态),即不可用状态。
            asy.Set();
        }
    }

}

 

分享到:
评论

相关推荐

    线程编程练习笔记

    2. ManualResetEvent和AutoResetEvent:事件触发机制,手动重置或自动重置。 3. CountdownEvent:计数器事件,当计数为零时触发。 六、线程状态 线程有多种状态,如新建(New)、可运行(Runnable)、挂起...

    c#多线程编程笔记

    本笔记将深入探讨C#中的多线程编程,包括其基本概念、创建线程的方式、线程同步与互斥、线程安全以及线程池的使用。 ### 1. 基本概念 - **线程**:线程是程序的执行流程,每个进程至少包含一个线程。多线程意味着...

    C#,UML ,sql学习笔记

    线程间的通信和同步是多线程编程的关键,可以通过锁(Mutex, Semaphore, Monitor)、信号量(ManualResetEvent, AutoResetEvent)以及异步等待等方式实现,以避免竞态条件和死锁问题。 【SQL优化】 SQL(Structured...

    C# 多线程笔记和示例讲解

    以下是对"C#多线程笔记"中可能包含的知识点的详细解释。 1. **线程基础**: - **什么是线程**:线程是程序执行的最小单元,每个进程至少有一个线程,负责执行程序代码。 - **主线程与子线程**:主线程是程序的...

    线程笔记(多线程,异常)

    4. **AutoResetEvent类**:`AutoResetEvent`是.NET中的一个同步对象,它使用信号机制。当信号为`false`(或未被设置)时,调用`WaitOne()`的线程会被阻塞,直到其他线程调用`Set()`方法将信号设置为`true`,然后至少...

    c#的ThreadPool使用笔记.pdf

    正确的做法是使用信号量(如`ManualResetEvent`或`AutoResetEvent`)、事件、队列或其他同步原语来通信,或者使用线程安全的数据结构(如`ConcurrentQueue`、`ConcurrentDictionary`等)。 总结,`ThreadPool`是C#...

    线程教程 多线程教程 C# 线程.rar

    个人工作和学习中积累和总结的多线程笔记 包含异步 线程等待 线程异常 线程终止 线程安全 lock monitor mutex autoresetevent semephore readerwriterlock readerwriterlockslim

Global site tag (gtag.js) - Google Analytics