- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
与使用 RegisterWaitForSingleObject()
而不是 WaitForSingleObject()
相比,优点/缺点是什么?
我知道的原因:
RegisterWaitForSingleObject()
使用操作系统中已有的线程池WaitForSingleObject()
的情况下,自己的线程应该轮询事件。唯一的区别是轮询与自动事件?或者它们之间是否有相当大的性能优势?
最佳答案
非常简单,WaitForSingleObject() 会阻塞一个线程。它正在消耗 1 兆字节的虚拟内存,并且在它被阻塞时没有对它做任何有用的事情。在句柄收到信号之前,它不会醒来并继续做有用的事情。
RegisterWaitForSingleObject() 不会阻塞线程。线程可以继续做有用的工作。当句柄发出信号时,Windows 会获取一个线程池线程来运行您指定为回调的代码。您将在 WFSO 调用后编写的相同代码。仍然有一个线程参与运行该回调,等待线程,但它可以处理许多 RWFSO 请求。
所以最大的优势是您的程序可以使用更少的线程,同时仍然处理许多服务请求。缺点是完成代码开始运行可能需要更长的时间。而且由于该代码在另一个线程上运行,因此更难正确编程。另请注意,如果您已经使用重叠 I/O,则不需要 RWFSO。
关于windows - WaitForSingleObject() vs RegisterWaitForSingleObject()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18694593/
如果我有多个等待数据更新的异步调用方,我应该在什么时候在此代码段中选择一种方法而不是另一种方法: public delegate void NewDataHandler(int data); publ
我在 RegisterWaitForSingleObject 中阅读过: http://www.albahari.com 而且我不明白我什么时候更喜欢使用 AutoResetEvent 而不是 Reg
我正在编写一个服务器应用程序来处理来自多个客户端的请求。对于请求的处理,我使用的是线程池。 其中一些请求修改了数据库记录,我希望一次将对该特定记录的访问限制为一个线程池线程。为此,我使用命名的信号量(
我正在使用 RegisterWaitForSingleObject调用它的基本用法形式以根据提供的超时值调用方法并且一切正常。但是有一个特定的 scerio 我正在使用这个代码调用 RegisterW
我正在使用带有事件句柄(自动重置事件)的 RegisterWaitForSingleObject。该事件在单独的线程中设置。 如果我不传递 WT_EXECUTEONLYONCE 标志并且在我的 Cal
我有时会在 RegisterWaitForSingleObject 中崩溃(10 次中有 1 次)。看起来RegisterWaitForSingleObject虽然返回了,但是内部线程池还没有准备好。
与使用 RegisterWaitForSingleObject() 而不是 WaitForSingleObject() 相比,优点/缺点是什么? 我知道的原因: RegisterWaitForSing
在我的一个项目中,我需要安排一项任务在后台线程中的某个指定时间间隔后完成。我使用 ThreadPool.RegisterWaitForSingleObject 机制来做到这一点。根据文档,第一个参数可
来自阅读the documentation of the ThreadPool.RegisterWaitForSingleObject方法,不清楚是否: 它在等待 EventWaitHandle 时阻
我正在尝试使用 ThreadPool.RegisterWaitForSingleObject 将计时器添加到一组线程。我创建了 9 个线程,并试图为它们中的每个线程提供平等的操作机会,因为如果我将它们
我正在使用 Begin/End 样式方法执行一些异步网络 I/O。 (它实际上是针对 Azure 表存储的查询,但我认为这并不重要。)我已经使用 ThreadPool.RegisterWaitForS
使用 I/O 完成端口与仅使用 RegisterWaitForSingleObject 来让线程池线程等待 I/O 完成有什么区别? 其中之一是否更快,如果是这样,为什么? 最佳答案 IOCP 通常是
我需要我的代码在等待特定时间后执行。这应该异步发生而不会阻塞我的线程。我在网上搜索并找到了很多方法来做到这一点。两个选项是使用 System.Timers 或使用 RegisterWaitForSin
我正在尝试使用 FindFirstChangeNotification 查看目录的变化功能。如果我获取 FindFirstChangeNotification 返回的句柄并将其填充到 WaitForS
我正在尝试制作一个程序,通过给定的进程 ID 检测进程终止。但是我不能给回调函数任何参数。我怎样才能做到这一点?谢谢。 void CALLBACK WaitOrTimerCallback(
问题可以用 MSDN 的以下引述来描述: The CommandTimeout property will be ignored during asynchronous method calls su
我是一名优秀的程序员,十分优秀!