rspec/rules/S3046/csharp/rule.adoc

17 lines
501 B
Plaintext
Raw Normal View History

2020-12-23 14:59:06 +01:00
The ``Monitor.Pulse`` call releases the object on which it was called and wakes up the first thread waiting for the lock on that object. Significantly, it only releases _one_ lock, and if multiple locks are held when it is called deadlocks could result.
2020-06-30 12:48:39 +02:00
== Noncompliant Code Example
----
public void doSomething(Object obj)
{
lock (this) //first lock
{
lock (obj) { // second lock
// ...
Monitor.Pulse(obj); // Noncompliant; only the second lock is released
}
}
}
----