is providing mutual exclusion (ie. via spinlock mechanism) enough to ensure effective implementation of concurrency? Or do we have to explicitly implement some synchronization method as well?
In sum:
Provision of concurrency = effective mutual exclusion implementation
OR
Provision of concurrency = effective mutual exclusion implementation + effective synchronization implementation
?
Thanks.
All you really need (though other things are often helpful for performance reasons) is mutual exclusion and some mechanism to ensure that operations can’t ‘move’ across the mutual exclusion barriers.