When you write synchronized code to stop executing something more than once at a time (Objective-C: "@synchronized"), which translates into calls to objc_sync_enter () and objc_sync_exit () calls backstage.
If you notice that someone uses these functions directly, this suggests that they cannot use the simple old synchronized block (or their own Swift shell for it), because their code breaks somehow - the synchronization starts and ends in different places.
Here's a nice Swift implementation that wraps this code similarly to Objective-C.
source share