can we add such feature? synchronized(null) ==> i.e NO-OP

mw mingwu at gmail.com
Fri Aug 26 17:33:16 UTC 2022


(orig post on learn 
https://forum.dlang.org/post/qzevyxtmksiximcxqgmn@forum.dlang.org)

I just tried:

```
import std;

void main()
{
     writeln("Hello D");
     Object obj = null;
synchronized (obj) {
     writeln("Synchronized on null");
}
}
```
output:
Hello D
Error: program killed by signal 11


The following is the usage pattern I want:

```
void foo(lots of params) {
   Object lock = (a particular condition) ? realLock : null;

   synchronized(lock) {
     // lots of complex code block here
   }

}
```

i.e depending on a a particular condition, the complex code block 
either need to be sync-protected, or not needed.

Method foo() has lots of params, I try to avoid refactor the 
inner code block into a separate method.

Since it's not currently supported, can we add such feature? 
synchronized(null) ==> essentially means NO-OP, instead of NPE?

Thanks.



More information about the Digitalmars-d mailing list