This is a multi-dimensional graph
I would anticipate that lock analysis on a larger number of elements increases complexity exponentially (or according to a factorial function). Therefore, to minimise complexity you would need to find a methodology that discovers mostly-isolated locking groups to exclude their internal interactions from the broader context.
While Locks are State machines, the state transitions themselves are not important, but rather the interconnectivity and therefore the discovery of potential deadlocks or races is more important.
I believe that in complex (multi-dimensional graph) situations that elude in-the-mind visualisation, it's best to list individual "facts" in one big list first (as you think of them), then try to expand (find missing elements), then cluster, then diagram. This is important, because the working-set memory in your brain is not large enough beyond Nx elements.
Therefore, you should:
- list out all lock resources (a dot-pointed list not a diagram)
- create sub-points for each lock of the resource users and the type of use (read/write)
- create "fragments" of the whole picture (it's unlikely that you can fit everything on a large diagram, because 2D is not enough - you will have too many overlapping lines)
- if you do try to create a full diagram, permit the same "lock users" to appear multiple times, but not the locks themselves. Maybe put an asterisk on any "lock users" that you have added multiple times in the diagram.
I would draw lock-resources as circles, and lock-users as rectangles. I would keep the diagrams as simple as possible, and write the details as dot-points or paragraphs underneath diagrams in a document (eg. Google Docs).