我在ioctl调用我的驱动程序中产生了一些线程。我也在为我的驱动程序分配内核亲和性。我想确保其中一个线程没有被调度,直到另一个线程标记了特定事件。有没有办法不允许Windows调度程序上下文我的线程。使用_disable()可能会挂起系统,因为事件可能需要几秒钟。
环境是Windows 7,64bit
谢谢,
答案 0 :(得分:2)
你可能追求的是旋转锁。然而,这可能是一个坏主意,除非您可以保证您的驱动程序/应用程序始终在多处理器系统上运行,即使这样仍然是非常糟糕的做法。在单处理器系统上,如果线程旋转锁定,那么发出旋转锁定线程的另一个线程将永远不会被调度,因此无法发出事件信号。旋转锁意味着谨慎使用,只有在锁定时间很短的情况下才能使用,而不是几秒钟。 听起来您需要使用事件或其他信号机制来同步您的线程并让Windows调度程序完成其工作。如果您需要非常快速地响应事件,则可以使用中断或延迟过程调用(DPC)。