use better locking technique for mutex_chan