mutual exclusion and synchronization