title: What does it mean to perform mutex locks functions atomically?
body: <p>It is stated that calls to either acquire() or release() must be performed atomically. What do they mean by that?</p>
  
  <pre><code>acquire() {
     while (!available)
        ; /* busy wait */
     available = false;;
  }
     do {
        (acquire lock)
           critical section
        (release lock)
           remainder section
     } while (true);
  
  release() {
     available = true;
  }
  </code></pre>