Everything you said is correct, but it may helps others to know this is called optimistic synchronization, which is a nice, Googleable term. Pessimistic synchronization uses locks; if you need to synchronize, you assume that anyone else will access it in a way that conflicts with you, so you lock it, gain exclusive access, and make everyone else wait.
Optimistic synchronization makes the opposite assumption, which allows for higher concurrency in some situations. The cost is all of the overhead to do conflict resolution if it turns out two threads do want to access and change the same pieces of memory.
Optimistic synchronization makes the opposite assumption, which allows for higher concurrency in some situations. The cost is all of the overhead to do conflict resolution if it turns out two threads do want to access and change the same pieces of memory.