Multithreading 关于简单线程术语的问题
当发出手动复位事件信号时, 等待事件的所有线程 变得可调度。当自动复位时 事件发出信号,只有一个 等待事件的线程变为 可安排的 我有一些真正的问题要问,因为我是线程新手Multithreading 关于简单线程术语的问题,multithreading,terminology,Multithreading,Terminology,当发出手动复位事件信号时, 等待事件的所有线程 变得可调度。当自动复位时 事件发出信号,只有一个 等待事件的线程变为 可安排的 我有一些真正的问题要问,因为我是线程新手 “设置”和“重置”事件意味着什么 手动重置和自动重置事件之间有什么区别 当一个事件被“发信号”时,它意味着什么?这是否意味着它已被激活 当一个线程变成“可调度”时意味着什么 什么是“等待事件” 基本上,“WaitHandle”(包括手动重置事件和自动重置事件)是允许线程等待某个事件发生的类型,在本例中,直到WaitHandle被
如果有多个线程等待WaitHandle,则会出现主要差异。在这种情况下,通过手动重置事件,所有线程都将被允许继续运行(即:它们现在是可调度的,这意味着操作系统将对它们进行设置,并在某个时间点再次运行它们,通常相当快)。自动重置事件允许一个线程继续,而WaitHandle为“重置”,这会阻止其他线程继续(直到下一个线程“释放”时再次发出WaitHandle信号为止)。要解决您的每个问题: 1) 当一个事件被重置时,这意味着等待该事件的另一个线程现在可以收到信号。换句话说,现在处于休眠(阻塞)状态的线程可以被唤醒来执行工作 2) 根据,
- 手动重置事件:一个事件对象,其状态保持有信号状态,直到ResetEvent函数将其显式重置为无信号状态。当发出信号时,可以释放任意数量的等待线程,或随后在其中一个等待函数中指定相同事件对象的线程
- 自动重置事件:一个事件对象,其状态保持有信号状态,直到释放单个等待线程,此时系统自动将状态设置为无信号状态。 如果没有线程在等待,则事件对象的状态保持有信号。如果有多个线程正在等待,则会选择一个等待线程。不要采用先进先出(FIFO)顺序。内核模式APCs等外部事件可以更改等待顺序
5) 等待事件意味着线程正在事件对象上阻塞。在阻塞时,线程不执行任何CPU周期,并且基本上被操作系统“置于睡眠状态” 要解决您的每个问题: 1) 当一个事件被重置时,这意味着等待该事件的另一个线程现在可以收到信号。换句话说,现在处于休眠(阻塞)状态的线程可以被唤醒来执行工作 2) 根据,
- 手动重置事件:一个事件对象,其状态保持有信号状态,直到ResetEvent函数将其显式重置为无信号状态。当发出信号时,可以释放任意数量的等待线程,或随后在其中一个等待函数中指定相同事件对象的线程
- 自动重置事件:一个事件对象,其状态保持有信号状态,直到释放单个等待线程,此时系统自动将状态设置为无信号状态。 如果没有线程在等待,则事件对象的状态保持有信号。如果有多个线程正在等待,则会选择一个等待线程。不要采用先进先出(FIFO)顺序。内核模式APCs等外部事件可以更改等待顺序