Der Inhalt einer Variablen soll um 1 erhöht werden.
Mit STM wäre es leicht:
atomically $ do v <- readTVar p ; writeTVar p $! (v+1)
ohne STM, mit einfachen atomaren Transaktionen:
AtomicInteger p; boolean ok; do { int v = p.get(); ok = p.compareAndSet(v,v+1); } while ( ! ok);