a synchronization primitive