On all platforms (except windows) TMultiReadExclusiveWriteSynchronizer is a TSimpleRWSync that internally simply use Tmonitor.enter / Tmonitor.exit and this is quite bad because only one read access at a time. Is their any equivalent of TMultiReadExclusiveWriteSynchronizer (windows version) that work on Android/iOS ?
CodePudding user response:
There is TLightweightMREW record in System.SyncObjs fully implemented on all platforms as thin wrapper around native OS implementations. Introduced in 10.4 Sydney.
There are some things to keep in mind:
- Read access can be called recursively from same thread, but write access cannot - it will deadlock on Windows and raise exception on Posix platforms
- Read access cannot be upgraded to write access.
