- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 RegisterWaitForSingleObject 中阅读过:
http://www.albahari.com
而且我不明白我什么时候更喜欢使用 AutoResetEvent 而不是 RegisterWaitForSingleObject?
似乎我们总是可以使用 RegisterWaitForSingleObject,而且它比 AutoResetEvent 更好,因为它不绑定(bind)到线程。
最佳答案
你在比较一个苹果和一个橘子。 RWFSO 需要一个等待句柄。就像一个 AutoResetEvent。 RWFSO 所做的是优化对事件的等待。没有它,您将需要调用事件的 WaitXxx() 方法。
调用 WaitOne() 会阻塞线程,直到事件为 Set()。这是您希望在线程池线程中避免的事情,因为阻塞的 TP 线程会阻止其他已调度的 TP 线程快速执行。线程池管理器尝试优化正在运行的 TP 线程的数量,因此执行的 TP 线程不会多于 cpu 内核。阻塞线程有点搞砸了,经理不够聪明,无法知道线程阻塞的原因。只有当阻塞 TP 线程半秒没有进展时,管理器才允许另一个等待的 TP 线程执行。
RWFSO 非常好,但肯定并不总是合适的。使用它进行编程相当笨拙,尤其是当您想要处理异常时。如果您需要取消它,就会有一个令人讨厌的隐含竞赛。当事件发出信号时运行的 TP 线程会受到相同类型的 TP 调度延迟。而且没有RegisterWaitForMultipleObjects(),线程通常需要使用WaitAny()。直观地说:一个事件告诉线程准备就绪,另一个事件告诉线程退出。
关于.net - RegisterWaitForSingleObject 与 AutoResetEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7009007/
如果我有多个等待数据更新的异步调用方,我应该在什么时候在此代码段中选择一种方法而不是另一种方法: 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
我是一名优秀的程序员,十分优秀!