Being new to multi-threading and mutexes I was going through the wikipedia for starters. I came across this portion:
CAS can be used to achieve wait-free mutual exclusion for any shared data structure by creating a linked list where each node represents the desired operation to be performed. CAS is then used to change the pointers in the linked list during the insertion of a new node. Only one process can be successful in its CAS; all other processes attempting to add a node at the same time will have to try again. Each process can then keep a local copy of the data structure, and upon traversing the linked list, can perform each operation from the list on its local copy.
Now I understand the basic concept of CAS where we basically use an atomic operation that compares a value to a predetermined value and if it matches we swap them. But I was not able to follow what is the "linked-list of desired operations" mean here? And why would all processes follow the same linked list of operations?