Yes, good point - but I think the 'race condition' issue is just a use-case issue rather than a design flaw.
All transactions that occur inside the IPE are atomic, so you are safe if you create a 'Singleton' methods for everything you want to do and its done inside the IPE.
If this is not flexible enough then don't use it, instead pass a DVR around whereby the developer has the choice to implement the lock-and-unlock paradigm and select and run methods where required.
But I have also seen the 'same' race-condition is other's code when an API is created for a DVR'd Class - which is why I see it as a programming\use-case issue rather than design flaw.
This is also (one of?) the reasons why NI would not allow wiring a DVR to a Class Method (PN only not IN) for fear of creating issues with unaware developers. Whilst I would still like the feature, I have seen it done 'accidentally' by experienced developers, so can now definitely see where NI are coming from.
The advantage of the patten is that the code required is much simpler and cleaner than using a traditional FGV.
When I used to use FGV\AE\MFVIs a lot (pre-LVOOP) I implemented them as follows.
I don't like placing enums (methods\commands) down on the BD
The enum should be private so private methods cannot be called
If the enum gets updated, I don't want it affecting application code
So I wrap each method call to the FGV in a wrapper VI
This means I can also defined the data inputs/outputs of the method, rather assume user has intimate knowledge of the FGV
I usually like to maintain an interface to the FGV which is a Cluster input and Cluster output so that I don't fill up the connector pane
So in the wrapper VI I have to bundle up inputs and unbundle outputs
All the above work in not required in the AQ's 2009 implementation, no enums, bundling, or wrapper VIs.
To handle reuse between different singleton methods I create method VIs of the DVR'd Class.
I am not really fussed whether it is technically a singleton or not, only that if the pattern fits my use case, then I like to use it.