Exercises

In the following exercises, you will use ScalaSTM to implement various transactional programming abstractions. In most cases, their implementation will closely resemble a sequential implementation, but use transactions. In some cases, you might need to consult external literature or ScalaSTM documentation to correctly solve the exercise.

  1. Implement the transactional pair abstraction, represented with the TPair class:
    class TPair[P, Q](pinit: P, qinit: Q) {
      def first(implicit txn: InTxn): P = ???
      def first_=(x: P)(implicit txn: InTxn): P = ???
      def second(implicit txn: InTxn): Q = ???
      def second_=(x: Q)(implicit txn: InTxn): Q = ???
      def swap()(implicit e: P =:= Q, txn: InTxn): Unit = ???
    }

    In addition to getters and setters for the two fields, ...

Get Learning Concurrent Programming in Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.