RegisterWaitForSingleObject

RegisterWaitForSingleObject

与使用RegisterWaitForSingleObject()而不是WaitForSingleObject()相比,优点/缺点是什么?

我知道的原因:

  • RegisterWaitForSingleObject()使用操作系统
  • 中已经可用的线程池
  • 如果使用WaitForSingleObject(),则应使用自己的线程对该事件进行轮询。

  • 唯一的区别是轮询与自动事件?或这两者之间是否有相当大的性能优势?

    最佳答案

    这很简单,WaitForSingleObject()会阻塞线程。它正在消耗一兆字节的虚拟内存,并且在阻塞时不会对其进行任何有用的处理。它不会唤醒并继续执行有用的操作,直到发出信号为止。

    RegisterWaitForSingleObject()不会阻止线程。该线程可以继续做有用的工作。当发出句柄信号时,Windows将捕获线程池线程以运行您指定为回调的代码。在WFSO调用之后您将编写的相同代码。还有一个线程与该回调运行有关,即等待线程,但它可以处理许多RWFSO请求。

    因此,最大的好处是您的程序可以使用更少的线程,同时仍可以处理许多服务请求。缺点是完成代码开始运行可能需要更长的时间。而且由于该代码在另一个线程上运行,因此很难正确编程。还要注意,当您已经使用重叠的I/O时,您不需要RWFSO。

    关于windows - WaitForSingleObject()和RegisterWaitForSingleObject()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18694593/

    10-11 14:00