- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Java 的 Object.wait()警告“虚假唤醒”,但 C# 的 Monitor.wait()好像根本没提。
看看Mono是如何在Linux之上实现的,Linux有spurious wakeups ,这不应该记录在某处吗?
最佳答案
乔·达菲的 "Concurrent Programming On Windows"提到了这一点(P311-312,P598)。这一点很有趣:
Note that in all of the above examples, threads must be resilient to something called spurious wake-ups - code that uses condition variables should remain correct and lively even in cases where it is awoken prematurely, that is, before the condition being sought has been established. This is not because the implementation will actually do such things (although some implementations on other platforms like Java and Pthreads are known to do so), nor because code will wake threads intentionally when it's unnecessary, but rather due to the fact that there is no guarantee around when a thread that has been awakened will become scheduled. Condition variables are not fair. It's possible - and even likely - that another thread will acquire the associated lock and make the condition false again before the awakened thread has a chance to reacquire the lock and return to the critical region.
然后他给出了正常的模式,用于一段时间循环测试条件。
我想说,从这里可以合理地预期 Monitor.Wait
不会 通常过早唤醒你,如果你绝对知道 em> 没有其他东西可以改变条件,那么您可能可以在没有条件循环的情况下逃脱:但是无论如何包含它会更安全,以防您的逻辑不准确。
关于c# - C# Monitor.Wait() 是否遭受虚假唤醒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461913/
我试图弄清楚接受 OpenID 登录的网站如何无法通过简单的主机文件更新来指向伪造的 OpenID 提供商。 假设我想侵入 Joe Smith 的帐户,在这个例子中,假设他的 OpenID 提供商是
#include #include #include #include #include #include #include #include #include #include #define P
根据此讨论 - "RESTful API - Correct behavior when spurious/not requested parameters are passed in the req
如果编译为 Cand C++ 源代码,这个简单的代码片段会使用 g++ 4.7.0 生成“函数调用中缺少标记”警告。我相信这是编译器的错误,因为最终的 NULL值(value)就在那里。 #inclu
我读到,有时 && 运算符用于“短路”JavaScript,使其相信返回值 0 是 0 而不是 NaN,因为 0 在 JavaScript 中是一个虚假数字。我一直在四处寻找,想弄清楚这一切意味着什么
我正在使用 Borland(又名“Embarcodegearland”)C++Builder 2007 编译器,它有一个小错误,系统头文件中的某些 static const 项可能导致虚假的 "xyz
我是一名优秀的程序员,十分优秀!